{"already_in_source_count":0,"candidate_count":54,"cross_major":false,"cve_available":true,"cve_count":2,"cves":[{"affected":{"12":"12","13":"13","14":"14","15":"15","16":"16"},"affected_ranges":[{"from":"0","until":"12.20"},{"from":"13","until":"13.16"},{"from":"14","until":"14.13"},{"from":"15","until":"15.8"},{"from":"16","until":"16.4"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2024-7348","component":"core server","cvss_version":"3.0","description_en":"Time-of-check Time-of-use (TOCTOU) race condition in pg_dump in PostgreSQL allows an object creator to execute arbitrary SQL functions as the user running pg_dump, which is often a superuser. The attack involves replacing another relation type with a view or foreign table. The attack requires waiting for pg_dump to start, but winning the race condition is trivial if the attacker retains an open transaction. Versions before PostgreSQL 16.4, 15.8, 14.13, 13.16, and 12.20 are affected.\n\nThe PostgreSQL project thanks Noah Misch for reporting this problem.","first_published":"2024-08-08","fixed":{"12":"12.20","13":"13.16","14":"14.13","15":"15.8","16":"16.4"},"fixed_version":"16.4","id":"CVE-2024-7348","introduced":{},"published":{"12":"2024-08-08","13":"2024-08-08","14":"2024-08-08","15":"2024-08-08","16":"2024-08-08"},"score":8.8,"title":"防止在 pg_dump 期间执行未经授权的代码","url":"https://www.postgresql.org/support/security/CVE-2024-7348/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"},{"affected":{"11":"11","12":"12","13":"13","14":"14","15":"15","16":"16"},"component":"core server","cvss_version":"3.0","description_en":"While modifying certain SQL array values, missing overflow checks let authenticated database users write arbitrary bytes to a memory area that facilitates arbitrary code execution. Missing overflow checks also let authenticated database users read a wide area of server memory. The CVE-2021-32027 fix covered some attacks of this description, but it missed others.\n\nThe PostgreSQL project thanks Pedro Gallegos for reporting this problem.","first_published":"2023-11-09","fixed":{"11":"11.22","12":"12.17","13":"13.13","14":"14.10","15":"15.5","16":"16.1"},"fixed_version":"16.1","id":"CVE-2023-5869","introduced":{},"published":{"11":"2023-11-09","12":"2023-11-09","13":"2023-11-09","14":"2023-11-09","15":"2023-11-09","16":"2023-11-09"},"score":8.8,"title":"检测计算新数组维度时的另一个整数溢出情况","url":"https://www.postgresql.org/support/security/CVE-2023-5869/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"}],"duplicate_count":0,"excluded_count":0,"exclusions":[],"from_release":null,"groups":[{"age_days":793,"build":"16.4","changes_count":54,"compatibility_count":0,"content_hash":"cc79dabde261f73951ba422830769f109eb046610e91033647d2e887c93aed24","date":"2024-08-08","date_text":"2024-08-08","doc_git":"","doc_loaded_at":"2026-09-26T02:56:37.084400","entries":[{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["66e94448a","6aba85a4b","72ef1675e","79c7a7e29","bbc94abf6","e81e53a0c","fdf218f1d"],"commit_groups":[["66e94448a","6aba85a4b","72ef1675e","79c7a7e29","bbc94abf6","e81e53a0c","fdf218f1d"]],"commits":["6aba85a4b"],"cves":["CVE-2024-7348"],"db_id":"4e8fb19dc66d6a954a3a437033ec67d9","html":"\u003cp\u003e防止在 \u003cspan\u003epg_dump\u003c/span\u003e 期间执行未经授权的代码（Masahiko Sawada）\u003ca href=\"https://postgr.es/c/6aba85a4b\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e能够创建和删除非临时对象的攻击者可以注入 SQL 代码，该代码将由并发的 \u003cspan\u003epg_dump\u003c/span\u003e 会话以运行 \u003cspan\u003epg_dump\u003c/span\u003e 的角色权限（通常是超级用户）来执行。该攻击涉及将序列或类似对象替换为会执行恶意代码的视图或外部表。为防止此问题，引入了新的服务器参数 \u003ccode\u003erestrict_nonsystem_relation_kind\u003c/code\u003e，可以禁止展开非内置视图以及访问外部表，并教会 \u003cspan\u003epg_dump\u003c/span\u003e 在可用时设置该参数。请注意，只有当 \u003cspan\u003epg_dump\u003c/span\u003e 和它正在导出的服务器都足够新以包含此修复时，才能防止该攻击。\u003c/p\u003e\n\u003cp\u003e\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢 Noah Misch 报告此问题。（CVE-2024-7348）\u003c/p\u003e","id":"16.4-24bc6aee30d87842","identity_text":"Prevent unauthorized code execution during pg_dump (Masahiko Sawada) An attacker able to create and drop non-temporary objects could inject SQL code that would be executed by a concurrent pg_dump session with the privileges of the role running pg_dump (which is often a superuser). The attack involves replacing a sequence or similar object with a view or foreign table that will execute malicious code. To prevent this, introduce a new server parameter restrict_nonsystem_relation_kind that can disable expansion of non-builtin views as well as access to foreign tables, and teach pg_dump to set it when available. Note that the attack is prevented only if both pg_dump and the server it is dumping from are new enough to have this fix. The PostgreSQL Project thanks Noah Misch for reporting this problem. (CVE-2024-7348)","part":"changes","patch_ids":["523fefda20c4d31aa6651d4a7832080b"],"related_changes":[{"db_id":"4b8b6b30269d73c62119ec73a51f0787","evidence":{"patch_ids":["523fefda20c4d31aa6651d4a7832080b"],"same_day":true,"statement_hash":"ff2dee7eaaaf5dfc9ab9abedc4b4ae86551f7a51e147d1c5317f6963700be2d7"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"防止在 pg_dump 期间执行未经授权的代码","url":"/docs/compare/?release=15.8#15.8-cb2ec150ee97d968","version":"15.8"},{"db_id":"813f22fc083427431bb4dd5fcb505625","evidence":{"patch_ids":["523fefda20c4d31aa6651d4a7832080b"],"same_day":true,"statement_hash":"ff2dee7eaaaf5dfc9ab9abedc4b4ae86551f7a51e147d1c5317f6963700be2d7"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"防止在 pg_dump 期间执行未经授权的代码","url":"/docs/compare/?release=14.13#14.13-79afc7e6590473c8","version":"14.13"},{"db_id":"5d48bc189a82a99da15c73ad2beebd72","evidence":{"patch_ids":["523fefda20c4d31aa6651d4a7832080b"],"same_day":true,"statement_hash":"ff2dee7eaaaf5dfc9ab9abedc4b4ae86551f7a51e147d1c5317f6963700be2d7"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"防止在 pg_dump 期间执行未经授权的代码","url":"/docs/compare/?release=13.16#13.16-2e433a29b91b07a9","version":"13.16"},{"db_id":"e64d8d76637f2cffb62c55e70118cc12","evidence":{"patch_ids":["523fefda20c4d31aa6651d4a7832080b"],"same_day":true,"statement_hash":"ff2dee7eaaaf5dfc9ab9abedc4b4ae86551f7a51e147d1c5317f6963700be2d7"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"防止在 pg_dump 期间执行未经授权的代码","url":"/docs/compare/?release=12.20#12.20-0874e137f764db4c","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["523fefda20c4d31aa6651d4a7832080b"],"same_day":true,"statement_hash":"ff2dee7eaaaf5dfc9ab9abedc4b4ae86551f7a51e147d1c5317f6963700be2d7"},"rule":2,"target":"4b8b6b30269d73c62119ec73a51f0787","type":"equivalent"},{"evidence":{"patch_ids":["523fefda20c4d31aa6651d4a7832080b"],"same_day":true,"statement_hash":"ff2dee7eaaaf5dfc9ab9abedc4b4ae86551f7a51e147d1c5317f6963700be2d7"},"rule":2,"target":"5d48bc189a82a99da15c73ad2beebd72","type":"equivalent"},{"evidence":{"patch_ids":["523fefda20c4d31aa6651d4a7832080b"],"same_day":true,"statement_hash":"ff2dee7eaaaf5dfc9ab9abedc4b4ae86551f7a51e147d1c5317f6963700be2d7"},"rule":2,"target":"813f22fc083427431bb4dd5fcb505625","type":"equivalent"},{"evidence":{"patch_ids":["523fefda20c4d31aa6651d4a7832080b"],"same_day":true,"statement_hash":"ff2dee7eaaaf5dfc9ab9abedc4b4ae86551f7a51e147d1c5317f6963700be2d7"},"rule":2,"target":"e64d8d76637f2cffb62c55e70118cc12","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["6aba85a4b"],"source_entry_id":"16.4/changes/001","source_hash":"585549ab9077b7420c4613de4061de9e093639e74a936e9a953683f5730e5c6f","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"ff2dee7eaaaf5dfc9ab9abedc4b4ae86551f7a51e147d1c5317f6963700be2d7","text":"防止在 pg_dump 期间执行未经授权的代码（Masahiko Sawada）§ 能够创建和删除非临时对象的攻击者可以注入 SQL 代码，该代码将由并发的 pg_dump 会话以运行 pg_dump 的角色权限（通常是超级用户）来执行。该攻击涉及将序列或类似对象替换为会执行恶意代码的视图或外部表。为防止此问题，引入了新的服务器参数 restrict_nonsystem_relation_kind，可以禁止展开非内置视图以及访问外部表，并教会 pg_dump 在可用时设置该参数。请注意，只有当 pg_dump 和它正在导出的服务器都足够新以包含此修复时，才能防止该攻击。 PostgreSQL 项目感谢 Noah Misch 报告此问题。（CVE-2024-7348）","title":"防止在 pg_dump 期间执行未经授权的代码","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["0ffc0acaf","507f2347e","cccab85c2"],"commit_groups":[["0ffc0acaf","507f2347e","cccab85c2"]],"commits":["507f2347e"],"cves":[],"db_id":"38521aa99823d4538fd3de64a4bee5a8","html":"\u003cp\u003e避免合并右反连接计划产生不正确的结果（Richard Guo）\u003ca href=\"https://postgr.es/c/507f2347e\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e如果已知内部关系具有唯一的连接键，当外部关系中存在重复的连接键时，合并可能会出现异常行为。\u003c/p\u003e","id":"16.4-499c4930d0d45bf8","identity_text":"Avoid incorrect results from Merge Right Anti Join plans (Richard Guo) If the inner relation is known to have unique join keys, the merge could misbehave when there are duplicated join keys in the outer relation.","part":"changes","patch_ids":["be61fe59136e38eda0fa6b6f10ea6dbb"],"related_changes":[],"relations":[],"section":"变更","section_path":["变更"],"source_commits":["507f2347e"],"source_entry_id":"16.4/changes/002","source_hash":"b1e8a6072a1b66e4d33a154d094564f3cb62595ee83246c730a92f5f83113e88","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"547294ea8fe1a13c8b60ad6b97fef9966e9e2aeeaa986e6e7ba23781fa6d91b1","text":"避免合并右反连接计划产生不正确的结果（Richard Guo）§ 如果已知内部关系具有唯一的连接键，当外部关系中存在重复的连接键时，合并可能会出现异常行为。","title":"避免合并右反连接计划产生不正确的结果","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["06bf404cd","45ce054c0","83c39a1f7","dc6354c67","fd4f12df5"],"commit_groups":[["06bf404cd","45ce054c0","83c39a1f7","dc6354c67","fd4f12df5"]],"commits":["06bf404cd"],"cves":[],"db_id":"d854ebe6ecf749252f64d7308ef12e6f","html":"\u003cp\u003e防止 \u003ccode\u003eVACUUM\u003c/code\u003e 中的无限循环（Melanie Plageman）\u003ca href=\"https://postgr.es/c/06bf404cd\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e在一个具有旧运行事务的断开连接的备库重新连接到主库之后，主库上的 \u003ccode\u003eVACUUM\u003c/code\u003e 可能会对哪些元组可以移除产生混淆，从而导致无限循环。\u003c/p\u003e","id":"16.4-adadf3107ed4b412","identity_text":"Prevent infinite loop in VACUUM (Melanie Plageman) After a disconnected standby server with an old running transaction reconnected to the primary, it was possible for VACUUM on the primary to get confused about which tuples are removable, resulting in an infinite loop.","part":"changes","patch_ids":["70c0f97b84fabfd63cd3e9680ab0aa54"],"related_changes":[{"db_id":"d80d353729fe2385a4582c6d271cd039","evidence":{"patch_ids":["70c0f97b84fabfd63cd3e9680ab0aa54"],"same_day":true,"statement_hash":"9d0235a0718aa961251cc42a6fe86b0b987f60cd4debea53a5fa3dca582e2447"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"防止 VACUUM 中的无限循环","url":"/docs/compare/?release=15.8#15.8-bf83fcff283d0939","version":"15.8"},{"db_id":"cf58994dbec26ceb5a5540265849c69f","evidence":{"patch_ids":["70c0f97b84fabfd63cd3e9680ab0aa54"],"same_day":true,"statement_hash":"9d0235a0718aa961251cc42a6fe86b0b987f60cd4debea53a5fa3dca582e2447"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"防止 VACUUM 中的无限循环","url":"/docs/compare/?release=14.13#14.13-d59a2ab2e7a24902","version":"14.13"}],"relations":[{"evidence":{"patch_ids":["70c0f97b84fabfd63cd3e9680ab0aa54"],"same_day":true,"statement_hash":"9d0235a0718aa961251cc42a6fe86b0b987f60cd4debea53a5fa3dca582e2447"},"rule":2,"target":"cf58994dbec26ceb5a5540265849c69f","type":"equivalent"},{"evidence":{"patch_ids":["70c0f97b84fabfd63cd3e9680ab0aa54"],"same_day":true,"statement_hash":"9d0235a0718aa961251cc42a6fe86b0b987f60cd4debea53a5fa3dca582e2447"},"rule":2,"target":"d80d353729fe2385a4582c6d271cd039","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["06bf404cd"],"source_entry_id":"16.4/changes/003","source_hash":"51ec040f9e0a31aff81557931e2a87e1ce858d51cf6bdee462541c4744ac1752","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"9d0235a0718aa961251cc42a6fe86b0b987f60cd4debea53a5fa3dca582e2447","text":"防止 VACUUM 中的无限循环（Melanie Plageman）§ 在一个具有旧运行事务的断开连接的备库重新连接到主库之后，主库上的 VACUUM 可能会对哪些元组可以移除产生混淆，从而导致无限循环。","title":"防止 VACUUM 中的无限循环","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["084814d88","08b6a9ecf","2b22543a4","3dd637f3d","ed7430975","f74fac06c","fe1d16f66"],"commit_groups":[["084814d88","08b6a9ecf","2b22543a4","3dd637f3d","ed7430975","f74fac06c","fe1d16f66"]],"commits":["084814d88"],"cves":[],"db_id":"ec94ee5a2790279a8a25b3dd3fa5d63a","html":"\u003cp\u003e修复在将表作为分区附加后的失败，如果该表之前有继承子表（Álvaro Herrera）\u003ca href=\"https://postgr.es/c/084814d88\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"16.4-d4eaac69a923e982","identity_text":"Fix failure after attaching a table as a partition, if the table had previously had inheritance children (Álvaro Herrera)","part":"changes","patch_ids":["d194b679b521d7439d65560aa40f7eaa"],"related_changes":[{"db_id":"b3cf42386a8c74e236e8bbb0697d28be","evidence":{"patch_ids":["d194b679b521d7439d65560aa40f7eaa"],"same_day":true,"statement_hash":"7f7c03eea395221a19931a49a8add19dcca8e00080c3dd073f2b8c37666c7a6a"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复在将表作为分区附加后的失败，如果该表之前有继承子表","url":"/docs/compare/?release=15.8#15.8-9b4166ac9d50e4b8","version":"15.8"},{"db_id":"fd19bcbfaacaf9a4cb511ac5de0af2bb","evidence":{"patch_ids":["d194b679b521d7439d65560aa40f7eaa"],"same_day":true,"statement_hash":"7f7c03eea395221a19931a49a8add19dcca8e00080c3dd073f2b8c37666c7a6a"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"修复在将表作为分区附加后的失败，如果该表之前有继承子表","url":"/docs/compare/?release=14.13#14.13-d9ad424821eab142","version":"14.13"},{"db_id":"b21d67c28f0ca5242009519e7b173b7b","evidence":{"patch_ids":["d194b679b521d7439d65560aa40f7eaa"],"same_day":true,"statement_hash":"7f7c03eea395221a19931a49a8add19dcca8e00080c3dd073f2b8c37666c7a6a"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"修复在将表作为分区附加后的失败，如果该表之前有继承子表","url":"/docs/compare/?release=13.16#13.16-ceaf20678b789860","version":"13.16"},{"db_id":"36f46d6303c1417bbde592ba867df825","evidence":{"patch_ids":["d194b679b521d7439d65560aa40f7eaa"],"same_day":true,"statement_hash":"7f7c03eea395221a19931a49a8add19dcca8e00080c3dd073f2b8c37666c7a6a"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"修复在将表作为分区附加后的失败，如果该表之前有继承子表","url":"/docs/compare/?release=12.20#12.20-a5310dd3542d0be4","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["d194b679b521d7439d65560aa40f7eaa"],"same_day":true,"statement_hash":"7f7c03eea395221a19931a49a8add19dcca8e00080c3dd073f2b8c37666c7a6a"},"rule":2,"target":"36f46d6303c1417bbde592ba867df825","type":"equivalent"},{"evidence":{"patch_ids":["d194b679b521d7439d65560aa40f7eaa"],"same_day":true,"statement_hash":"7f7c03eea395221a19931a49a8add19dcca8e00080c3dd073f2b8c37666c7a6a"},"rule":2,"target":"b21d67c28f0ca5242009519e7b173b7b","type":"equivalent"},{"evidence":{"patch_ids":["d194b679b521d7439d65560aa40f7eaa"],"same_day":true,"statement_hash":"7f7c03eea395221a19931a49a8add19dcca8e00080c3dd073f2b8c37666c7a6a"},"rule":2,"target":"b3cf42386a8c74e236e8bbb0697d28be","type":"equivalent"},{"evidence":{"patch_ids":["d194b679b521d7439d65560aa40f7eaa"],"same_day":true,"statement_hash":"7f7c03eea395221a19931a49a8add19dcca8e00080c3dd073f2b8c37666c7a6a"},"rule":2,"target":"fd19bcbfaacaf9a4cb511ac5de0af2bb","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["084814d88"],"source_entry_id":"16.4/changes/004","source_hash":"4f1b046d5a4b2355f28bf7b70eb7ccef540d75dccff402a126e40e5022ef7589","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"7f7c03eea395221a19931a49a8add19dcca8e00080c3dd073f2b8c37666c7a6a","text":"修复在将表作为分区附加后的失败，如果该表之前有继承子表（Álvaro Herrera）§","title":"修复在将表作为分区附加后的失败，如果该表之前有继承子表","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["00a40e33c","0340eefd9","057482569","067cb6c5d","2f5007459","30ca4e1ab","34eb37f79","4ae09c59d","66aaa7a71","74e12db19","7898a494f","839177913","9f0f72d89","d0054432d"],"commit_groups":[["00a40e33c","057482569","30ca4e1ab","4ae09c59d","66aaa7a71","839177913","d0054432d"],["0340eefd9","067cb6c5d","2f5007459","34eb37f79","74e12db19","7898a494f","9f0f72d89"]],"commits":["00a40e33c","34eb37f79"],"cves":[],"db_id":"a890785f64ab4befa8f0bc9dab907637","html":"\u003cp\u003e修复涉及不一致的基于索引的约束时 \u003ccode\u003eALTER TABLE DETACH PARTITION\u003c/code\u003e 的问题（Álvaro Herrera，Tender Wang）\u003ca href=\"https://postgr.es/c/00a40e33c\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/34eb37f79\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e当分区表有一个不与约束关联的索引，但某个分区有一个等效的索引且该索引与约束关联时，分离该分区会出现异常行为，导致前分区的约束具有不正确的 \u003ccode\u003econinhcount\u003c/code\u003e 值。这会在后续对该约束进行任何操作时引发问题。\u003c/p\u003e","id":"16.4-9b5674d1dbb513ed","identity_text":"Fix ALTER TABLE DETACH PARTITION for cases involving inconsistent index-based constraints (Álvaro Herrera, Tender Wang) When a partitioned table has an index that is not associated with a constraint, but a partition has an equivalent index that is, then detaching the partition would misbehave, leaving the ex-partition's constraint with an incorrect coninhcount value. This would cause trouble during any further manipulations of that constraint.","part":"changes","patch_ids":["7a474cd20dd560cf058c4fa7c9a88bc0","da6fe3a741a29320268685bf55e6d728"],"related_changes":[{"db_id":"b53ea97012521fd43d7008e825deb747","evidence":{"patch_ids":["7a474cd20dd560cf058c4fa7c9a88bc0","da6fe3a741a29320268685bf55e6d728"],"same_day":true,"statement_hash":"cc22cdf207c9f0287940f7d24242c7d3189d8f4066304018b704d3a20779cda4"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复涉及不一致的基于索引的约束时 ALTER TABLE DETACH PARTITION 的问题","url":"/docs/compare/?release=15.8#15.8-d28967b11040c2ea","version":"15.8"},{"db_id":"d4f7b1c3ac3631a0b2d426a828db4e7d","evidence":{"patch_ids":["7a474cd20dd560cf058c4fa7c9a88bc0","da6fe3a741a29320268685bf55e6d728"],"same_day":true,"statement_hash":"cc22cdf207c9f0287940f7d24242c7d3189d8f4066304018b704d3a20779cda4"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"修复涉及不一致的基于索引的约束时 ALTER TABLE DETACH PARTITION 的问题","url":"/docs/compare/?release=14.13#14.13-7e4c44b0e8944a10","version":"14.13"},{"db_id":"0b5de1e04a8f32032a437c6404911548","evidence":{"patch_ids":["7a474cd20dd560cf058c4fa7c9a88bc0","da6fe3a741a29320268685bf55e6d728"],"same_day":true,"statement_hash":"cc22cdf207c9f0287940f7d24242c7d3189d8f4066304018b704d3a20779cda4"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"修复涉及不一致的基于索引的约束时 ALTER TABLE DETACH PARTITION 的问题","url":"/docs/compare/?release=13.16#13.16-f6e4b254611abdf4","version":"13.16"},{"db_id":"e6946f4aa46c1453fc9816029aeb48b0","evidence":{"patch_ids":["7a474cd20dd560cf058c4fa7c9a88bc0","da6fe3a741a29320268685bf55e6d728"],"same_day":true,"statement_hash":"cc22cdf207c9f0287940f7d24242c7d3189d8f4066304018b704d3a20779cda4"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"修复涉及不一致的基于索引的约束时 ALTER TABLE DETACH PARTITION 的问题","url":"/docs/compare/?release=12.20#12.20-aa70dc747225f04d","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["7a474cd20dd560cf058c4fa7c9a88bc0","da6fe3a741a29320268685bf55e6d728"],"same_day":true,"statement_hash":"cc22cdf207c9f0287940f7d24242c7d3189d8f4066304018b704d3a20779cda4"},"rule":2,"target":"0b5de1e04a8f32032a437c6404911548","type":"equivalent"},{"evidence":{"patch_ids":["7a474cd20dd560cf058c4fa7c9a88bc0","da6fe3a741a29320268685bf55e6d728"],"same_day":true,"statement_hash":"cc22cdf207c9f0287940f7d24242c7d3189d8f4066304018b704d3a20779cda4"},"rule":2,"target":"b53ea97012521fd43d7008e825deb747","type":"equivalent"},{"evidence":{"patch_ids":["7a474cd20dd560cf058c4fa7c9a88bc0","da6fe3a741a29320268685bf55e6d728"],"same_day":true,"statement_hash":"cc22cdf207c9f0287940f7d24242c7d3189d8f4066304018b704d3a20779cda4"},"rule":2,"target":"d4f7b1c3ac3631a0b2d426a828db4e7d","type":"equivalent"},{"evidence":{"patch_ids":["7a474cd20dd560cf058c4fa7c9a88bc0","da6fe3a741a29320268685bf55e6d728"],"same_day":true,"statement_hash":"cc22cdf207c9f0287940f7d24242c7d3189d8f4066304018b704d3a20779cda4"},"rule":2,"target":"e6946f4aa46c1453fc9816029aeb48b0","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["00a40e33c","34eb37f79"],"source_entry_id":"16.4/changes/005","source_hash":"499c41c17d4ae19715952608a234aa31543385b359f3a8dcc7fc43923800f6a3","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"cc22cdf207c9f0287940f7d24242c7d3189d8f4066304018b704d3a20779cda4","text":"修复涉及不一致的基于索引的约束时 ALTER TABLE DETACH PARTITION 的问题（Álvaro Herrera，Tender Wang）§ § 当分区表有一个不与约束关联的索引，但某个分区有一个等效的索引且该索引与约束关联时，分离该分区会出现异常行为，导致前分区的约束具有不正确的 coninhcount 值。这会在后续对该约束进行任何操作时引发问题。","title":"修复涉及不一致的基于索引的约束时 ALTER TABLE DETACH PARTITION 的问题","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["03c8cdbb7","27162a64b","5dcaefc6a","66e569f50","96105ebfe","bf78abebf","c2fab7024","fb0fb0740"],"commit_groups":[["03c8cdbb7","5dcaefc6a","bf78abebf","c2fab7024"],["27162a64b","66e569f50","96105ebfe","fb0fb0740"]],"commits":["96105ebfe","bf78abebf"],"cves":[],"db_id":"fbdf06f40e5209be8b7468482487692f","html":"\u003cp\u003e修复 \u003ccode\u003eALTER TABLE DETACH PARTITION CONCURRENTLY\u003c/code\u003e 期间的分区剪枝设置（Álvaro Herrera）\u003ca href=\"https://postgr.es/c/96105ebfe\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/bf78abebf\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e执行器假定在对分区表的查询规划和执行之间不会有分区被分离。自从引入 \u003ccode\u003eDETACH PARTITION\u003c/code\u003e 的 \u003ccode\u003eCONCURRENTLY\u003c/code\u003e 选项后，这一假设不再成立，使得在使用该选项时查询执行可能会出现短暂的失败。\u003c/p\u003e","id":"16.4-b1e4d95284bfca87","identity_text":"Fix partition pruning setup during ALTER TABLE DETACH PARTITION CONCURRENTLY (Álvaro Herrera) The executor assumed that no partition could be detached between planning and execution of a query on a partitioned table. This is no longer true since the introduction of DETACH PARTITION's CONCURRENTLY option, making it possible for query execution to fail transiently when that is used.","part":"changes","patch_ids":["4dbc8f300a6d7a1c82a98a15cb8aa1be","fd9400809a6fe6411b5b9684b122233a"],"related_changes":[{"db_id":"4284caa93dab0414d2a02cbea72530d8","evidence":{"patch_ids":["4dbc8f300a6d7a1c82a98a15cb8aa1be","fd9400809a6fe6411b5b9684b122233a"],"same_day":true,"statement_hash":"aa80133bb62e2a0823eab05aad5946127ffb0bae64b9d2d1a6d7666cce462649"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复 ALTER TABLE DETACH PARTITION CONCURRENTLY 期间的分区剪枝设置","url":"/docs/compare/?release=15.8#15.8-b1e4d95284bfca87","version":"15.8"},{"db_id":"a0b998fe6dac012277a1b4d9751d713d","evidence":{"patch_ids":["4dbc8f300a6d7a1c82a98a15cb8aa1be","fd9400809a6fe6411b5b9684b122233a"],"same_day":true,"statement_hash":"aa80133bb62e2a0823eab05aad5946127ffb0bae64b9d2d1a6d7666cce462649"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"修复 ALTER TABLE DETACH PARTITION CONCURRENTLY 期间的分区剪枝设置","url":"/docs/compare/?release=14.13#14.13-b1e4d95284bfca87","version":"14.13"}],"relations":[{"evidence":{"patch_ids":["4dbc8f300a6d7a1c82a98a15cb8aa1be","fd9400809a6fe6411b5b9684b122233a"],"same_day":true,"statement_hash":"aa80133bb62e2a0823eab05aad5946127ffb0bae64b9d2d1a6d7666cce462649"},"rule":2,"target":"4284caa93dab0414d2a02cbea72530d8","type":"equivalent"},{"evidence":{"patch_ids":["4dbc8f300a6d7a1c82a98a15cb8aa1be","fd9400809a6fe6411b5b9684b122233a"],"same_day":true,"statement_hash":"aa80133bb62e2a0823eab05aad5946127ffb0bae64b9d2d1a6d7666cce462649"},"rule":2,"target":"a0b998fe6dac012277a1b4d9751d713d","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["96105ebfe","bf78abebf"],"source_entry_id":"16.4/changes/006","source_hash":"819a7ce35cac359d3f0ad1cceb2fe79663b123c4adc60bea3b70f196f6675194","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"aa80133bb62e2a0823eab05aad5946127ffb0bae64b9d2d1a6d7666cce462649","text":"修复 ALTER TABLE DETACH PARTITION CONCURRENTLY 期间的分区剪枝设置（Álvaro Herrera）§ § 执行器假定在对分区表的查询规划和执行之间不会有分区被分离。自从引入 DETACH PARTITION 的 CONCURRENTLY 选项后，这一假设不再成立，使得在使用该选项时查询执行可能会出现短暂的失败。","title":"修复 ALTER TABLE DETACH PARTITION CONCURRENTLY 期间的分区剪枝设置","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["2b415e95a","2b4a2a79e","710207032","e81deeefc","f5bb46fb2"],"commit_groups":[["2b415e95a","2b4a2a79e","710207032","e81deeefc","f5bb46fb2"]],"commits":["e81deeefc"],"cves":[],"db_id":"e7fef28cfb717788671e55a4fb20bcb9","html":"\u003cp\u003e在最后一个子分区被删除后，正确地将分区表的 \u003ccode\u003epg_class\u003c/code\u003e.\u003ccode\u003ereltuples\u003c/code\u003e 字段更新为零（Noah Misch）\u003ca href=\"https://postgr.es/c/e81deeefc\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e对这样的分区表进行第一次 \u003ccode\u003eANALYZE\u003c/code\u003e 时必须同时更新 \u003ccode\u003erelhassubclass\u003c/code\u003e，而这导致 \u003ccode\u003ereltuples\u003c/code\u003e 的更新丢失。\u003c/p\u003e","id":"16.4-09f19f56ee6390c7","identity_text":"Correctly update a partitioned table's pg_class.reltuples field to zero after its last child partition is dropped (Noah Misch) The first ANALYZE on such a partitioned table must update relhassubclass as well, and that caused the reltuples update to be lost.","part":"changes","patch_ids":["38d5b163594560c7ec9d236c2241a56f"],"related_changes":[{"db_id":"4f782209771174bb9d08a14cef3bae99","evidence":{"patch_ids":["38d5b163594560c7ec9d236c2241a56f"],"same_day":true,"statement_hash":"34af8b42d1f5de0f1ae80e571b5bdf24166da489a671d82d0e73fa676a7b7d99"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"在最后一个子分区被删除后，正确地将分区表的 pg_class.reltuples 字段更新为零","url":"/docs/compare/?release=15.8#15.8-affd8c3ce7e9b582","version":"15.8"},{"db_id":"69f08fdc29318984868322def5665ca9","evidence":{"patch_ids":["38d5b163594560c7ec9d236c2241a56f"],"same_day":true,"statement_hash":"34af8b42d1f5de0f1ae80e571b5bdf24166da489a671d82d0e73fa676a7b7d99"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"在最后一个子分区被删除后，正确地将分区表的 pg_class.reltuples 字段更新为零","url":"/docs/compare/?release=14.13#14.13-495d14e97c08139a","version":"14.13"}],"relations":[{"evidence":{"patch_ids":["38d5b163594560c7ec9d236c2241a56f"],"same_day":true,"statement_hash":"34af8b42d1f5de0f1ae80e571b5bdf24166da489a671d82d0e73fa676a7b7d99"},"rule":2,"target":"4f782209771174bb9d08a14cef3bae99","type":"equivalent"},{"evidence":{"patch_ids":["38d5b163594560c7ec9d236c2241a56f"],"same_day":true,"statement_hash":"34af8b42d1f5de0f1ae80e571b5bdf24166da489a671d82d0e73fa676a7b7d99"},"rule":2,"target":"69f08fdc29318984868322def5665ca9","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["e81deeefc"],"source_entry_id":"16.4/changes/007","source_hash":"05862cd066b695913c44527c000795b858b2859a8fcc0c0fbf5d91d87275af08","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"34af8b42d1f5de0f1ae80e571b5bdf24166da489a671d82d0e73fa676a7b7d99","text":"在最后一个子分区被删除后，正确地将分区表的 pg_class.reltuples 字段更新为零（Noah Misch）§ 对这样的分区表进行第一次 ANALYZE 时必须同时更新 relhassubclass，而这导致 reltuples 的更新丢失。","title":"在最后一个子分区被删除后，正确地将分区表的 pg_class.reltuples 字段更新为零","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["4208f44c9","525bd1620","5fe43d41d","70ffb27b2","751598263","8e0e99972","9de0ff91a","bb331af4a","c40e78d23","d88dcdf0f","e85f641b2","f535f350c"],"commit_groups":[["4208f44c9","5fe43d41d","751598263","9de0ff91a","bb331af4a","d88dcdf0f"],["525bd1620","70ffb27b2","8e0e99972","c40e78d23","e85f641b2","f535f350c"]],"commits":["8e0e99972","bb331af4a"],"cves":[],"db_id":"9104561b33ac989ab5a6bede4dc50e1f","html":"\u003cp\u003e修复过程的多态输出参数的处理（Tom Lane）\u003ca href=\"https://postgr.es/c/8e0e99972\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/bb331af4a\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eSQL \u003ccode\u003eCALL\u003c/code\u003e 语句未能为此类参数解析正确的数据类型，导致诸如 \u003cspan\u003e“\u003cspan\u003ecannot display a value of type anyelement\u003c/span\u003e”\u003c/span\u003e 之类的错误，甚至直接崩溃。（但 \u003cspan\u003ePL/pgSQL\u003c/span\u003e 中的 \u003ccode\u003eCALL\u003c/code\u003e 可以正确工作。）\u003c/p\u003e","id":"16.4-c118ed77384005ad","identity_text":"Fix handling of polymorphic output arguments for procedures (Tom Lane) The SQL CALL statement did not resolve the correct data types for such arguments, leading to errors such as cannot display a value of type anyelement, or even outright crashes. (But CALL in PL/pgSQL worked correctly.)","part":"changes","patch_ids":["c673c19c8c2fa5b57a80232b1ba74d1d","fe8b1d79850edc856a2492545fc7de3b"],"related_changes":[{"db_id":"780c380af58f55dc04828c6fc9c0fed3","evidence":{"patch_ids":["c673c19c8c2fa5b57a80232b1ba74d1d","fe8b1d79850edc856a2492545fc7de3b"],"same_day":true,"statement_hash":"fe9351c1494f416138806c89d55acfb927ac21340774de1a6932c966bd333724"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复过程的多态输出参数的处理","url":"/docs/compare/?release=15.8#15.8-c118ed77384005ad","version":"15.8"},{"db_id":"1b1cc49018041233d88062d94b4a58bc","evidence":{"patch_ids":["c673c19c8c2fa5b57a80232b1ba74d1d","fe8b1d79850edc856a2492545fc7de3b"],"same_day":true,"statement_hash":"fe9351c1494f416138806c89d55acfb927ac21340774de1a6932c966bd333724"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"修复过程的多态输出参数的处理","url":"/docs/compare/?release=14.13#14.13-c118ed77384005ad","version":"14.13"},{"db_id":"f280ad1c7083fdbb19c800fee72b70d3","evidence":{"patch_ids":["c673c19c8c2fa5b57a80232b1ba74d1d","fe8b1d79850edc856a2492545fc7de3b"],"same_day":true,"statement_hash":"fe9351c1494f416138806c89d55acfb927ac21340774de1a6932c966bd333724"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"修复过程的多态输出参数的处理","url":"/docs/compare/?release=13.16#13.16-73b6a7a0d84cc6e0","version":"13.16"},{"db_id":"820141551e6621c7014f7c23ea863a6a","evidence":{"patch_ids":["c673c19c8c2fa5b57a80232b1ba74d1d","fe8b1d79850edc856a2492545fc7de3b"],"same_day":true,"statement_hash":"fe9351c1494f416138806c89d55acfb927ac21340774de1a6932c966bd333724"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"修复过程的多态输出参数的处理","url":"/docs/compare/?release=12.20#12.20-025a2814d5f1a97d","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["c673c19c8c2fa5b57a80232b1ba74d1d","fe8b1d79850edc856a2492545fc7de3b"],"same_day":true,"statement_hash":"fe9351c1494f416138806c89d55acfb927ac21340774de1a6932c966bd333724"},"rule":2,"target":"1b1cc49018041233d88062d94b4a58bc","type":"equivalent"},{"evidence":{"patch_ids":["c673c19c8c2fa5b57a80232b1ba74d1d","fe8b1d79850edc856a2492545fc7de3b"],"same_day":true,"statement_hash":"fe9351c1494f416138806c89d55acfb927ac21340774de1a6932c966bd333724"},"rule":2,"target":"780c380af58f55dc04828c6fc9c0fed3","type":"equivalent"},{"evidence":{"patch_ids":["c673c19c8c2fa5b57a80232b1ba74d1d","fe8b1d79850edc856a2492545fc7de3b"],"same_day":true,"statement_hash":"fe9351c1494f416138806c89d55acfb927ac21340774de1a6932c966bd333724"},"rule":2,"target":"820141551e6621c7014f7c23ea863a6a","type":"equivalent"},{"evidence":{"patch_ids":["c673c19c8c2fa5b57a80232b1ba74d1d","fe8b1d79850edc856a2492545fc7de3b"],"same_day":true,"statement_hash":"fe9351c1494f416138806c89d55acfb927ac21340774de1a6932c966bd333724"},"rule":2,"target":"f280ad1c7083fdbb19c800fee72b70d3","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["8e0e99972","bb331af4a"],"source_entry_id":"16.4/changes/008","source_hash":"22fa4143a4ce87527215cc80ac38618afc8e74993cae4205a5de2fd175529640","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"fe9351c1494f416138806c89d55acfb927ac21340774de1a6932c966bd333724","text":"修复过程的多态输出参数的处理（Tom Lane）§ § SQL CALL 语句未能为此类参数解析正确的数据类型，导致诸如 “cannot display a value of type anyelement” 之类的错误，甚至直接崩溃。（但 PL/pgSQL 中的 CALL 可以正确工作。）","title":"修复过程的多态输出参数的处理","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["0be81dd71","0d18b8eb4","0f7d1338c","1d4ea1376","2dc1deaea","a160e9277"],"commit_groups":[["0be81dd71","0d18b8eb4","0f7d1338c","1d4ea1376","2dc1deaea","a160e9277"]],"commits":["0d18b8eb4"],"cves":[],"db_id":"a07d7962c8f60343f5d4ad6c36dae2b0","html":"\u003cp\u003e修复从 \u003ccode\u003eCALL\u003c/code\u003e 语句的参数列表中调用稳定函数时的行为（Tom Lane）\u003ca href=\"https://postgr.es/c/0d18b8eb4\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e如果 \u003ccode\u003eCALL\u003c/code\u003e 位于原子上下文中（例如存在外部事务块），此类函数会被传递错误的快照，导致它们看到自外部事务开始以来已修改的行的过期值。\u003c/p\u003e","id":"16.4-fadc4da9ac5a6eae","identity_text":"Fix behavior of stable functions called from a CALL statement's argument list (Tom Lane) If the CALL is within an atomic context (e.g. there's an outer transaction block), such functions were passed the wrong snapshot, causing them to see stale values of rows modified since the start of the outer transaction.","part":"changes","patch_ids":["591579de72ffe4af6c0bfd479dd66a3b"],"related_changes":[{"db_id":"28dba7f6e6014f5b8c46a679a595a864","evidence":{"patch_ids":["591579de72ffe4af6c0bfd479dd66a3b"],"same_day":true,"statement_hash":"b1f3f1f43ff52ed1251c58f0ccb9f99012dd737fe8509117e69d2dacc00e7244"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复从 CALL 语句的参数列表中调用稳定函数时的行为","url":"/docs/compare/?release=15.8#15.8-fadc4da9ac5a6eae","version":"15.8"},{"db_id":"4c879b9e67ec7c535d70d1e470727d3c","evidence":{"patch_ids":["591579de72ffe4af6c0bfd479dd66a3b"],"same_day":true,"statement_hash":"b1f3f1f43ff52ed1251c58f0ccb9f99012dd737fe8509117e69d2dacc00e7244"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"修复从 CALL 语句的参数列表中调用稳定函数时的行为","url":"/docs/compare/?release=14.13#14.13-fadc4da9ac5a6eae","version":"14.13"},{"db_id":"74a7107eaf68460781b07dd2eff6ceea","evidence":{"patch_ids":["591579de72ffe4af6c0bfd479dd66a3b"],"same_day":true,"statement_hash":"b1f3f1f43ff52ed1251c58f0ccb9f99012dd737fe8509117e69d2dacc00e7244"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"修复从 CALL 语句的参数列表中调用稳定函数时的行为","url":"/docs/compare/?release=13.16#13.16-898f61f2714050ea","version":"13.16"},{"db_id":"7a347de7100a8a2c5be0771020158601","evidence":{"patch_ids":["591579de72ffe4af6c0bfd479dd66a3b"],"same_day":true,"statement_hash":"b1f3f1f43ff52ed1251c58f0ccb9f99012dd737fe8509117e69d2dacc00e7244"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"修复从 CALL 语句的参数列表中调用稳定函数时的行为","url":"/docs/compare/?release=12.20#12.20-36607cb96eec13cd","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["591579de72ffe4af6c0bfd479dd66a3b"],"same_day":true,"statement_hash":"b1f3f1f43ff52ed1251c58f0ccb9f99012dd737fe8509117e69d2dacc00e7244"},"rule":2,"target":"28dba7f6e6014f5b8c46a679a595a864","type":"equivalent"},{"evidence":{"patch_ids":["591579de72ffe4af6c0bfd479dd66a3b"],"same_day":true,"statement_hash":"b1f3f1f43ff52ed1251c58f0ccb9f99012dd737fe8509117e69d2dacc00e7244"},"rule":2,"target":"4c879b9e67ec7c535d70d1e470727d3c","type":"equivalent"},{"evidence":{"patch_ids":["591579de72ffe4af6c0bfd479dd66a3b"],"same_day":true,"statement_hash":"b1f3f1f43ff52ed1251c58f0ccb9f99012dd737fe8509117e69d2dacc00e7244"},"rule":2,"target":"74a7107eaf68460781b07dd2eff6ceea","type":"equivalent"},{"evidence":{"patch_ids":["591579de72ffe4af6c0bfd479dd66a3b"],"same_day":true,"statement_hash":"b1f3f1f43ff52ed1251c58f0ccb9f99012dd737fe8509117e69d2dacc00e7244"},"rule":2,"target":"7a347de7100a8a2c5be0771020158601","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["0d18b8eb4"],"source_entry_id":"16.4/changes/009","source_hash":"09c7590dd1e68f9e3121ca82ac3bbac0ea431b9b88cd2511065e156d0905c349","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"b1f3f1f43ff52ed1251c58f0ccb9f99012dd737fe8509117e69d2dacc00e7244","text":"修复从 CALL 语句的参数列表中调用稳定函数时的行为（Tom Lane）§ 如果 CALL 位于原子上下文中（例如存在外部事务块），此类函数会被传递错误的快照，导致它们看到自外部事务开始以来已修改的行的过期值。","title":"修复从 CALL 语句的参数列表中调用稳定函数时的行为","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["019ea7675","a9a7c2c3e"],"commit_groups":[["019ea7675","a9a7c2c3e"]],"commits":["019ea7675"],"cves":[],"db_id":"29547587aa3a334e5c67e843f7a49391","html":"\u003cp\u003e修复 \u003ccode\u003etime\u003c/code\u003e 和 \u003ccode\u003etimetz\u003c/code\u003e 类型的 ISO-8601 \u003cspan\u003e“\u003cspan\u003e扩展\u003c/span\u003e”\u003c/span\u003e时间格式的输入（Tom Lane）\u003ca href=\"https://postgr.es/c/019ea7675\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e重新允许诸如 \u003ccode\u003eT12:34:56\u003c/code\u003e 之类的情况。\u003c/p\u003e","id":"16.4-fa1dd5dd0e3fbca6","identity_text":"Fix input of ISO-8601 extended time format for types time and timetz (Tom Lane) Re-allow cases such as T12:34:56.","part":"changes","patch_ids":["4d606ae2ebad3708a611e4b48fc342c4"],"related_changes":[],"relations":[],"section":"变更","section_path":["变更"],"source_commits":["019ea7675"],"source_entry_id":"16.4/changes/010","source_hash":"523574656870512b9812896c630388ed5e749b380ff636af8259b5a112c55460","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"878b55b42ce789386bbd039eb8d990ac798a39e0d07c93c2be7b7b28d130230c","text":"修复 time 和 timetz 类型的 ISO-8601 “扩展”时间格式的输入（Tom Lane）§ 重新允许诸如 T12:34:56 之类的情况。","title":"修复 time 和 timetz 类型的 ISO-8601 “扩展”时间格式的输入","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["22b0ccd65","34e9dce69","3764ee47f","4f9628158","b82791c8f","c5321e965","e8dfe0430"],"commit_groups":[["22b0ccd65","34e9dce69","3764ee47f","4f9628158","b82791c8f","c5321e965","e8dfe0430"]],"commits":["34e9dce69"],"cves":[],"db_id":"11b6bf2fdfe5435a60a177591adf452d","html":"\u003cp\u003e检测 \u003ccode\u003emoney\u003c/code\u003e 计算中的整数溢出（Joseph Koshakow）\u003ca href=\"https://postgr.es/c/34e9dce69\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e之前 \u003ccode\u003emoney\u003c/code\u003e 类型的所有算术函数都没有检查溢出，因此在溢出的情况下会静默地给出错误的结果。\u003c/p\u003e","id":"16.4-8f2abad2fd76312c","identity_text":"Detect integer overflow in money calculations (Joseph Koshakow) None of the arithmetic functions for the money type checked for overflow before, so they would silently give wrong answers for overflowing cases.","part":"changes","patch_ids":["2347c1179b305aa93b068dd63f2b6faa"],"related_changes":[{"db_id":"fd430934b2423d413cbf1a5d799fa7ed","evidence":{"patch_ids":["2347c1179b305aa93b068dd63f2b6faa"],"same_day":true,"statement_hash":"5ac9138ff0134cfd3fee3f30c16da68853c417dacd8941bd81a38db4321e8de1"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"检测 money 计算中的整数溢出","url":"/docs/compare/?release=15.8#15.8-6d5ba0d03266efbd","version":"15.8"},{"db_id":"b390e27d1bfc9e8195ab41f81bc927c0","evidence":{"patch_ids":["2347c1179b305aa93b068dd63f2b6faa"],"same_day":true,"statement_hash":"5ac9138ff0134cfd3fee3f30c16da68853c417dacd8941bd81a38db4321e8de1"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"检测 money 计算中的整数溢出","url":"/docs/compare/?release=14.13#14.13-395470a0c971f6d8","version":"14.13"},{"db_id":"352409133223c80a7e88aa00e034e0f3","evidence":{"patch_ids":["2347c1179b305aa93b068dd63f2b6faa"],"same_day":true,"statement_hash":"5ac9138ff0134cfd3fee3f30c16da68853c417dacd8941bd81a38db4321e8de1"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"检测 money 计算中的整数溢出","url":"/docs/compare/?release=13.16#13.16-4b0cac87b48a9234","version":"13.16"},{"db_id":"c3fd9a0c92aafeee5708290c2f19cb47","evidence":{"patch_ids":["2347c1179b305aa93b068dd63f2b6faa"],"same_day":true,"statement_hash":"5ac9138ff0134cfd3fee3f30c16da68853c417dacd8941bd81a38db4321e8de1"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"检测 money 计算中的整数溢出","url":"/docs/compare/?release=12.20#12.20-bce8023057d952f3","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["2347c1179b305aa93b068dd63f2b6faa"],"same_day":true,"statement_hash":"5ac9138ff0134cfd3fee3f30c16da68853c417dacd8941bd81a38db4321e8de1"},"rule":2,"target":"352409133223c80a7e88aa00e034e0f3","type":"equivalent"},{"evidence":{"patch_ids":["2347c1179b305aa93b068dd63f2b6faa"],"same_day":true,"statement_hash":"5ac9138ff0134cfd3fee3f30c16da68853c417dacd8941bd81a38db4321e8de1"},"rule":2,"target":"b390e27d1bfc9e8195ab41f81bc927c0","type":"equivalent"},{"evidence":{"patch_ids":["2347c1179b305aa93b068dd63f2b6faa"],"same_day":true,"statement_hash":"5ac9138ff0134cfd3fee3f30c16da68853c417dacd8941bd81a38db4321e8de1"},"rule":2,"target":"c3fd9a0c92aafeee5708290c2f19cb47","type":"equivalent"},{"evidence":{"patch_ids":["2347c1179b305aa93b068dd63f2b6faa"],"same_day":true,"statement_hash":"5ac9138ff0134cfd3fee3f30c16da68853c417dacd8941bd81a38db4321e8de1"},"rule":2,"target":"fd430934b2423d413cbf1a5d799fa7ed","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["34e9dce69"],"source_entry_id":"16.4/changes/011","source_hash":"49646a4fe59e5c1fefc73beb5fecf7f6d40d8ee5331eabd0d01899a646e3cf3a","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"5ac9138ff0134cfd3fee3f30c16da68853c417dacd8941bd81a38db4321e8de1","text":"检测 money 计算中的整数溢出（Joseph Koshakow）§ 之前 money 类型的所有算术函数都没有检查溢出，因此在溢出的情况下会静默地给出错误的结果。","title":"检测 money 计算中的整数溢出","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["1ff39f4ff","47ca912de","7a8977d25","8badee787","a3c0124f6","ece296926","f7aec8c1d"],"commit_groups":[["1ff39f4ff","47ca912de","7a8977d25","8badee787","a3c0124f6","ece296926","f7aec8c1d"]],"commits":["f7aec8c1d"],"cves":[],"db_id":"464f26d639efe30a7259582dc4ec5ffd","html":"\u003cp\u003e修复 \u003ccode\u003eround(numeric)\u003c/code\u003e 和 \u003ccode\u003etrunc(numeric)\u003c/code\u003e 中对小数位参数过于激进的截断（Dean Rasheed）\u003ca href=\"https://postgr.es/c/f7aec8c1d\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这些函数将小数位参数截断到 +/-2000，但有些有效的使用场景需要更大的值；在这些情况下函数返回了不正确的结果。改为截断到 \u003ccode\u003enumeric\u003c/code\u003e 类型实际允许的范围。\u003c/p\u003e","id":"16.4-a98b7e3df6eaaab8","identity_text":"Fix over-aggressive clamping of the scale argument in round(numeric) and trunc(numeric) (Dean Rasheed) These functions clamped their scale argument to +/-2000, but there are valid use-cases for it to be larger; the functions returned incorrect results in such cases. Instead clamp to the actual allowed range of type numeric.","part":"changes","patch_ids":["1047a03efb16dfc56952a0d093ce1a95"],"related_changes":[{"db_id":"864c078229062c2d11995374de108127","evidence":{"patch_ids":["1047a03efb16dfc56952a0d093ce1a95"],"same_day":true,"statement_hash":"15eaddd6ff6d9cfeb03f60c6074e62611d55909780a080195c81fcf037f4b9d1"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复 round(numeric) 和 trunc(numeric) 中对小数位参数过于激进的截断","url":"/docs/compare/?release=15.8#15.8-5131c68cc0c79629","version":"15.8"},{"db_id":"47549eb0c2b1965d44c1bea698bb435b","evidence":{"patch_ids":["1047a03efb16dfc56952a0d093ce1a95"],"same_day":true,"statement_hash":"15eaddd6ff6d9cfeb03f60c6074e62611d55909780a080195c81fcf037f4b9d1"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"修复 round(numeric) 和 trunc(numeric) 中对小数位参数过于激进的截断","url":"/docs/compare/?release=14.13#14.13-3b8a8e08f21b008d","version":"14.13"},{"db_id":"c31e4062c6d36d86c7095029c789e824","evidence":{"patch_ids":["1047a03efb16dfc56952a0d093ce1a95"],"same_day":true,"statement_hash":"15eaddd6ff6d9cfeb03f60c6074e62611d55909780a080195c81fcf037f4b9d1"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"修复 round(numeric) 和 trunc(numeric) 中对小数位参数过于激进的截断","url":"/docs/compare/?release=13.16#13.16-49ff5213d7815826","version":"13.16"},{"db_id":"900760919962e70a7775385651b6951f","evidence":{"patch_ids":["1047a03efb16dfc56952a0d093ce1a95"],"same_day":true,"statement_hash":"15eaddd6ff6d9cfeb03f60c6074e62611d55909780a080195c81fcf037f4b9d1"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"修复 round(numeric) 和 trunc(numeric) 中对小数位参数过于激进的截断","url":"/docs/compare/?release=12.20#12.20-2a7ad11c29386d18","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["1047a03efb16dfc56952a0d093ce1a95"],"same_day":true,"statement_hash":"15eaddd6ff6d9cfeb03f60c6074e62611d55909780a080195c81fcf037f4b9d1"},"rule":2,"target":"47549eb0c2b1965d44c1bea698bb435b","type":"equivalent"},{"evidence":{"patch_ids":["1047a03efb16dfc56952a0d093ce1a95"],"same_day":true,"statement_hash":"15eaddd6ff6d9cfeb03f60c6074e62611d55909780a080195c81fcf037f4b9d1"},"rule":2,"target":"864c078229062c2d11995374de108127","type":"equivalent"},{"evidence":{"patch_ids":["1047a03efb16dfc56952a0d093ce1a95"],"same_day":true,"statement_hash":"15eaddd6ff6d9cfeb03f60c6074e62611d55909780a080195c81fcf037f4b9d1"},"rule":2,"target":"900760919962e70a7775385651b6951f","type":"equivalent"},{"evidence":{"patch_ids":["1047a03efb16dfc56952a0d093ce1a95"],"same_day":true,"statement_hash":"15eaddd6ff6d9cfeb03f60c6074e62611d55909780a080195c81fcf037f4b9d1"},"rule":2,"target":"c31e4062c6d36d86c7095029c789e824","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["f7aec8c1d"],"source_entry_id":"16.4/changes/012","source_hash":"0851ec423d4194e4be43ce1ffaaafada5b0760ad9eef76abcc7823013a71d4bb","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"15eaddd6ff6d9cfeb03f60c6074e62611d55909780a080195c81fcf037f4b9d1","text":"修复 round(numeric) 和 trunc(numeric) 中对小数位参数过于激进的截断（Dean Rasheed）§ 这些函数将小数位参数截断到 +/-2000，但有些有效的使用场景需要更大的值；在这些情况下函数返回了不正确的结果。改为截断到 numeric 类型实际允许的范围。","title":"修复 round(numeric) 和 trunc(numeric) 中对小数位参数过于激进的截断","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["0a80e88d9","1e020258e","6f6b0f193","b181062aa"],"commit_groups":[["0a80e88d9","1e020258e","6f6b0f193","b181062aa"]],"commits":["6f6b0f193"],"cves":[],"db_id":"ebbdabfae5d7cf2901450b6a06b92850","html":"\u003cp\u003e修复 \u003ccode\u003epg_size_pretty()\u003c/code\u003e 应用于最小可能的 \u003ccode\u003ebigint\u003c/code\u003e 值时的结果（Joseph Koshakow）\u003ca href=\"https://postgr.es/c/6f6b0f193\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"16.4-226978973ca3ced7","identity_text":"Fix result for pg_size_pretty() when applied to the smallest possible bigint value (Joseph Koshakow)","part":"changes","patch_ids":["ca718d73e429124dca668629698792f9"],"related_changes":[{"db_id":"b88298255cd64fb81e2c1c711e16a4ef","evidence":{"patch_ids":["ca718d73e429124dca668629698792f9"],"same_day":true,"statement_hash":"f22decc7a50611cf3ccd8a9549ceab86b36cd4376451d16b47f47ec554d87b33"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复 pg_size_pretty() 应用于最小可能的 bigint 值时的结果","url":"/docs/compare/?release=15.8#15.8-c060bd65af7a9cf2","version":"15.8"}],"relations":[{"evidence":{"patch_ids":["ca718d73e429124dca668629698792f9"],"same_day":true,"statement_hash":"f22decc7a50611cf3ccd8a9549ceab86b36cd4376451d16b47f47ec554d87b33"},"rule":2,"target":"b88298255cd64fb81e2c1c711e16a4ef","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["6f6b0f193"],"source_entry_id":"16.4/changes/013","source_hash":"a077f246815c844d8488599ea3d7d2b30f4915b9a45bdbabde2de2f7662f9a9e","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"f22decc7a50611cf3ccd8a9549ceab86b36cd4376451d16b47f47ec554d87b33","text":"修复 pg_size_pretty() 应用于最小可能的 bigint 值时的结果（Joseph Koshakow）§","title":"修复 pg_size_pretty() 应用于最小可能的 bigint 值时的结果","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["09ec5d455","2812059d3","3cb2f13ac","857d280c6","c1664c8ee","c8714230a"],"commit_groups":[["09ec5d455","2812059d3","3cb2f13ac","857d280c6","c1664c8ee","c8714230a"]],"commits":["c1664c8ee"],"cves":[],"db_id":"f6e89c2fffa8bfe1a8991b772ba61198","html":"\u003cp\u003e防止 \u003ccode\u003epg_sequence_last_value()\u003c/code\u003e 在备库上的不记录 WAL 的序列以及其他会话的临时序列上失败（Nathan Bossart）\u003ca href=\"https://postgr.es/c/c1664c8ee\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e在这些情况下使其返回 NULL 而不是抛出错误。\u003c/p\u003e","id":"16.4-62c2924647a51e0c","identity_text":"Prevent pg_sequence_last_value() from failing on unlogged sequences on standby servers and on temporary sequences of other sessions (Nathan Bossart) Make it return NULL in these cases instead of throwing an error.","part":"changes","patch_ids":["9347da384122e06ef4905abb03c967b8"],"related_changes":[{"db_id":"99df7dca3a5976e202a3d99168f62a0a","evidence":{"patch_ids":["9347da384122e06ef4905abb03c967b8"],"same_day":true,"statement_hash":"66e9662381d668d9b94796775ed0fffdbff033bbf13696f16330f7664da2b3e7"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"防止 pg_sequence_last_value() 在备库上的不记录 WAL 的序列以及其他会话的临时序列上失败","url":"/docs/compare/?release=15.8#15.8-62c2924647a51e0c","version":"15.8"},{"db_id":"abd4f4e23e691afeec1782d405270108","evidence":{"patch_ids":["9347da384122e06ef4905abb03c967b8"],"same_day":true,"statement_hash":"66e9662381d668d9b94796775ed0fffdbff033bbf13696f16330f7664da2b3e7"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"防止 pg_sequence_last_value() 在备库上的不记录 WAL 的序列以及其他会话的临时序列上失败","url":"/docs/compare/?release=14.13#14.13-62c2924647a51e0c","version":"14.13"},{"db_id":"b5bb3d35aa02583899b8650cc24fb876","evidence":{"patch_ids":["9347da384122e06ef4905abb03c967b8"],"same_day":true,"statement_hash":"66e9662381d668d9b94796775ed0fffdbff033bbf13696f16330f7664da2b3e7"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"防止 pg_sequence_last_value() 在备库上的不记录 WAL 的序列和其他会话的临时序列上失败","url":"/docs/compare/?release=13.16#13.16-3feda48efa54990a","version":"13.16"},{"db_id":"e12eec6c5a738be6fef94606371c454d","evidence":{"patch_ids":["9347da384122e06ef4905abb03c967b8"],"same_day":true,"statement_hash":"66e9662381d668d9b94796775ed0fffdbff033bbf13696f16330f7664da2b3e7"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"防止 pg_sequence_last_value() 在备库上的不记录 WAL 的序列和其他会话的临时序列上失败","url":"/docs/compare/?release=12.20#12.20-40d68e8ee065f547","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["9347da384122e06ef4905abb03c967b8"],"same_day":true,"statement_hash":"66e9662381d668d9b94796775ed0fffdbff033bbf13696f16330f7664da2b3e7"},"rule":2,"target":"99df7dca3a5976e202a3d99168f62a0a","type":"equivalent"},{"evidence":{"patch_ids":["9347da384122e06ef4905abb03c967b8"],"same_day":true,"statement_hash":"66e9662381d668d9b94796775ed0fffdbff033bbf13696f16330f7664da2b3e7"},"rule":2,"target":"abd4f4e23e691afeec1782d405270108","type":"equivalent"},{"evidence":{"patch_ids":["9347da384122e06ef4905abb03c967b8"],"same_day":true,"statement_hash":"66e9662381d668d9b94796775ed0fffdbff033bbf13696f16330f7664da2b3e7"},"rule":2,"target":"b5bb3d35aa02583899b8650cc24fb876","type":"equivalent"},{"evidence":{"patch_ids":["9347da384122e06ef4905abb03c967b8"],"same_day":true,"statement_hash":"66e9662381d668d9b94796775ed0fffdbff033bbf13696f16330f7664da2b3e7"},"rule":2,"target":"e12eec6c5a738be6fef94606371c454d","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["c1664c8ee"],"source_entry_id":"16.4/changes/014","source_hash":"e1c252a5a3e706cb947237c844db34356b32bf365623b94977275663f3b58b47","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"66e9662381d668d9b94796775ed0fffdbff033bbf13696f16330f7664da2b3e7","text":"防止 pg_sequence_last_value() 在备库上的不记录 WAL 的序列以及其他会话的临时序列上失败（Nathan Bossart）§ 在这些情况下使其返回 NULL 而不是抛出错误。","title":"防止 pg_sequence_last_value() 在备库上的不记录 WAL 的序列以及其他会话的临时序列上失败","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["086ecd12b","56a829621","5912bf77c","5e63a6f43","c7de5a654","df95c1ec0"],"commit_groups":[["086ecd12b","56a829621","5912bf77c","5e63a6f43","c7de5a654","df95c1ec0"]],"commits":["086ecd12b"],"cves":[],"db_id":"d4762f5c0d82c61ab05f087145078d9d","html":"\u003cp\u003e修复 \u003ccode\u003ewebsearch_to_tsquery()\u003c/code\u003e 中被忽略的操作符的解析（Tom Lane）\u003ca href=\"https://postgr.es/c/086ecd12b\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e根据手册，\u003ccode\u003ewebsearch_to_tsquery()\u003c/code\u003e 的输入中的标点符号除了破折号和引号的特殊情况外都会被忽略。然而，紧接在 \u003ccode\u003eor\u003c/code\u003e 之前出现的括号和其他一些字符可能导致 \u003ccode\u003eor\u003c/code\u003e 被视为数据词，而非预期的 \u003ccode\u003eOR\u003c/code\u003e 操作符。\u003c/p\u003e","id":"16.4-de2b4991da717550","identity_text":"Fix parsing of ignored operators in websearch_to_tsquery() (Tom Lane) Per the manual, punctuation in the input of websearch_to_tsquery() is ignored except for the special cases of dashes and quotes. However, parentheses and a few other characters appearing immediately before an or could cause or to be treated as a data word, rather than as an OR operator as expected.","part":"changes","patch_ids":["cb064cc15f7ff5ae6a0ccc8a24423b04"],"related_changes":[{"db_id":"5c9026daffdc12d4ddda057a13c9d5e8","evidence":{"patch_ids":["cb064cc15f7ff5ae6a0ccc8a24423b04"],"same_day":true,"statement_hash":"9226b5d95ffb43a1431d2ce0b709b2635c1d689845fecfc7aa2045ca0d7db26c"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复 websearch_to_tsquery() 中被忽略的操作符的解析","url":"/docs/compare/?release=15.8#15.8-de2b4991da717550","version":"15.8"},{"db_id":"b4c2f73f672b5458c9a7040be8221a21","evidence":{"patch_ids":["cb064cc15f7ff5ae6a0ccc8a24423b04"],"same_day":true,"statement_hash":"9226b5d95ffb43a1431d2ce0b709b2635c1d689845fecfc7aa2045ca0d7db26c"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"修复 websearch_to_tsquery() 中被忽略的操作符的解析","url":"/docs/compare/?release=14.13#14.13-de2b4991da717550","version":"14.13"},{"db_id":"7344cdfc6e2a8dfec3d630c6eb357c94","evidence":{"patch_ids":["cb064cc15f7ff5ae6a0ccc8a24423b04"],"same_day":true,"statement_hash":"9226b5d95ffb43a1431d2ce0b709b2635c1d689845fecfc7aa2045ca0d7db26c"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"修复 websearch_to_tsquery() 中对被忽略操作符的解析","url":"/docs/compare/?release=13.16#13.16-28460648cf68de79","version":"13.16"},{"db_id":"c1450056b34ca3c2107f9d15bac99530","evidence":{"patch_ids":["cb064cc15f7ff5ae6a0ccc8a24423b04"],"same_day":true,"statement_hash":"9226b5d95ffb43a1431d2ce0b709b2635c1d689845fecfc7aa2045ca0d7db26c"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"修复 websearch_to_tsquery() 中对被忽略操作符的解析","url":"/docs/compare/?release=12.20#12.20-594d598c8960abf6","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["cb064cc15f7ff5ae6a0ccc8a24423b04"],"same_day":true,"statement_hash":"9226b5d95ffb43a1431d2ce0b709b2635c1d689845fecfc7aa2045ca0d7db26c"},"rule":2,"target":"5c9026daffdc12d4ddda057a13c9d5e8","type":"equivalent"},{"evidence":{"patch_ids":["cb064cc15f7ff5ae6a0ccc8a24423b04"],"same_day":true,"statement_hash":"9226b5d95ffb43a1431d2ce0b709b2635c1d689845fecfc7aa2045ca0d7db26c"},"rule":2,"target":"7344cdfc6e2a8dfec3d630c6eb357c94","type":"equivalent"},{"evidence":{"patch_ids":["cb064cc15f7ff5ae6a0ccc8a24423b04"],"same_day":true,"statement_hash":"9226b5d95ffb43a1431d2ce0b709b2635c1d689845fecfc7aa2045ca0d7db26c"},"rule":2,"target":"b4c2f73f672b5458c9a7040be8221a21","type":"equivalent"},{"evidence":{"patch_ids":["cb064cc15f7ff5ae6a0ccc8a24423b04"],"same_day":true,"statement_hash":"9226b5d95ffb43a1431d2ce0b709b2635c1d689845fecfc7aa2045ca0d7db26c"},"rule":2,"target":"c1450056b34ca3c2107f9d15bac99530","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["086ecd12b"],"source_entry_id":"16.4/changes/015","source_hash":"404d674341931f239e9cdb47efd3559522ebb5473ea01a1db30b7f8c96e84501","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"9226b5d95ffb43a1431d2ce0b709b2635c1d689845fecfc7aa2045ca0d7db26c","text":"修复 websearch_to_tsquery() 中被忽略的操作符的解析（Tom Lane）§ 根据手册，websearch_to_tsquery() 的输入中的标点符号除了破折号和引号的特殊情况外都会被忽略。然而，紧接在 or 之前出现的括号和其他一些字符可能导致 or 被视为数据词，而非预期的 OR 操作符。","title":"修复 websearch_to_tsquery() 中被忽略的操作符的解析","variants":[],"version":"16.4"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["547dd2cbd","657e54a05","670fb9f18","6c1b71bc6","878e8c6be","991f8cf8a","a57d16865"],"commit_groups":[["547dd2cbd","657e54a05","670fb9f18","6c1b71bc6","878e8c6be","991f8cf8a","a57d16865"]],"commits":["a57d16865"],"cves":["CVE-2023-5869"],"db_id":"855f692bec1a1e21e57a99d7fba42c6f","html":"\u003cp\u003e检测计算新数组维度时的另一个整数溢出情况（Joseph Koshakow）\u003ca href=\"https://postgr.es/c/a57d16865\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e拒绝将数组维度 \u003ccode\u003e[-2147483648:2147483647]\u003c/code\u003e 应用于空数组。这与 CVE-2023-5869 密切相关，但看起来是无害的，因为数组最终仍然为空。\u003c/p\u003e","id":"16.4-1c0606d0a0df7d1b","identity_text":"Detect another integer overflow case while computing new array dimensions (Joseph Koshakow) Reject applying array dimensions [-2147483648:2147483647] to an empty array. This is closely related to CVE-2023-5869, but appears harmless since the array still ends up empty.","part":"changes","patch_ids":["0aaa0b11f29fc2801cba8f482431d18f"],"related_changes":[{"db_id":"4f6878678916cc3dfb82b0249f0ee422","evidence":{"patch_ids":["0aaa0b11f29fc2801cba8f482431d18f"],"same_day":true,"statement_hash":"66af8461726797096f0f79c08d897244d4280c370596efd4a008401131c0002e"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"检测计算新数组维度时的另一个整数溢出情况","url":"/docs/compare/?release=15.8#15.8-972cc39245b78980","version":"15.8"},{"db_id":"51f7f01fc4220c797e00a18515161b97","evidence":{"patch_ids":["0aaa0b11f29fc2801cba8f482431d18f"],"same_day":true,"statement_hash":"66af8461726797096f0f79c08d897244d4280c370596efd4a008401131c0002e"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"检测计算新数组维度时的另一个整数溢出情况","url":"/docs/compare/?release=14.13#14.13-13f6c9d61147cac5","version":"14.13"},{"db_id":"cae41a9a3d98c4cbe51cf0ac818506cb","evidence":{"patch_ids":["0aaa0b11f29fc2801cba8f482431d18f"],"same_day":true,"statement_hash":"66af8461726797096f0f79c08d897244d4280c370596efd4a008401131c0002e"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"检测计算新数组维度时的另一个整数溢出情况","url":"/docs/compare/?release=13.16#13.16-27841b5006f6d0ca","version":"13.16"},{"db_id":"0d2e0b77aae145682f73bd947fa66118","evidence":{"patch_ids":["0aaa0b11f29fc2801cba8f482431d18f"],"same_day":true,"statement_hash":"66af8461726797096f0f79c08d897244d4280c370596efd4a008401131c0002e"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"检测计算新数组维度时的另一个整数溢出情况","url":"/docs/compare/?release=12.20#12.20-9e24737f3cb9daf2","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["0aaa0b11f29fc2801cba8f482431d18f"],"same_day":true,"statement_hash":"66af8461726797096f0f79c08d897244d4280c370596efd4a008401131c0002e"},"rule":2,"target":"0d2e0b77aae145682f73bd947fa66118","type":"equivalent"},{"evidence":{"patch_ids":["0aaa0b11f29fc2801cba8f482431d18f"],"same_day":true,"statement_hash":"66af8461726797096f0f79c08d897244d4280c370596efd4a008401131c0002e"},"rule":2,"target":"4f6878678916cc3dfb82b0249f0ee422","type":"equivalent"},{"evidence":{"patch_ids":["0aaa0b11f29fc2801cba8f482431d18f"],"same_day":true,"statement_hash":"66af8461726797096f0f79c08d897244d4280c370596efd4a008401131c0002e"},"rule":2,"target":"51f7f01fc4220c797e00a18515161b97","type":"equivalent"},{"evidence":{"patch_ids":["0aaa0b11f29fc2801cba8f482431d18f"],"same_day":true,"statement_hash":"66af8461726797096f0f79c08d897244d4280c370596efd4a008401131c0002e"},"rule":2,"target":"cae41a9a3d98c4cbe51cf0ac818506cb","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["a57d16865"],"source_entry_id":"16.4/changes/016","source_hash":"87e63944a277716454e3b74747b8351d945f94e6a1b5d263547fca4af5236428","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"66af8461726797096f0f79c08d897244d4280c370596efd4a008401131c0002e","text":"检测计算新数组维度时的另一个整数溢出情况（Joseph Koshakow）§ 拒绝将数组维度 [-2147483648:2147483647] 应用于空数组。这与 CVE-2023-5869 密切相关，但看起来是无害的，因为数组最终仍然为空。","title":"检测计算新数组维度时的另一个整数溢出情况","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["10fdc67f8","403cbd210","679c5084c"],"commit_groups":[["10fdc67f8","403cbd210","679c5084c"]],"commits":["403cbd210"],"cves":[],"db_id":"3a5d439f199d491999a57215f0476d7f","html":"\u003cp\u003e修复 \u003ccode\u003estrnxfrm()\u003c/code\u003e 的不可移植用法（Jeff Davis）\u003ca href=\"https://postgr.es/c/403cbd210\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e非确定性排序规则的某些代码路径可能会因诸如 \u003cspan\u003e“\u003cspan\u003epg_strnxfrm() returned unexpected result\u003c/span\u003e”\u003c/span\u003e 之类的错误而失败。\u003c/p\u003e","id":"16.4-819e198a20ba1344","identity_text":"Fix unportable usage of strnxfrm() (Jeff Davis) Some code paths for non-deterministic collations could fail with errors like pg_strnxfrm() returned unexpected result.","part":"changes","patch_ids":["629ba40dce8789881ef1075239b8a15d"],"related_changes":[],"relations":[],"section":"变更","section_path":["变更"],"source_commits":["403cbd210"],"source_entry_id":"16.4/changes/017","source_hash":"8ed2ed6bf5c020abfb44f7bb735f1c8e5ffbdfff739cac97f1b81db68e61c856","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"69e8b12eac1a9957f0fc5da445b4f27b7c00324d33516a0c6da7103cc79e5592","text":"修复 strnxfrm() 的不可移植用法（Jeff Davis）§ 非确定性排序规则的某些代码路径可能会因诸如 “pg_strnxfrm() returned unexpected result” 之类的错误而失败。","title":"修复 strnxfrm() 的不可移植用法","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["11f3815d6","7a21306ae","af73e37fa","b08a4b616","e4afd7153","f9f47f0d9"],"commit_groups":[["11f3815d6","7a21306ae","af73e37fa","b08a4b616","e4afd7153","f9f47f0d9"]],"commits":["e4afd7153"],"cves":[],"db_id":"2733f31505efbc88e387fff2329eb5f4","html":"\u003cp\u003e检测在对目录缓存条目的字段进行解压缩时该条目变为过期的另一种情况（Noah Misch）\u003ca href=\"https://postgr.es/c/e4afd7153\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e在展开目录元组的行外字段时发生的原地更新可能会被遗漏，导致目录缓存条目缺少原地更改但不被认为是过时的。这仅在 \u003ccode\u003epg_database\u003c/code\u003e 目录中可能发生，因此影响范围较窄，但可能会导致异常行为。\u003c/p\u003e","id":"16.4-7abf34a46259074d","identity_text":"Detect another case of a new catalog cache entry becoming stale while detoasting its fields (Noah Misch) An in-place update occurring while we expand out-of-line fields in a catalog tuple could be missed, leading to a catalog cache entry that lacks the in-place change but is not known to be stale. This is only possible in the pg_database catalog, so the effects are narrow, but misbehavior is possible.","part":"changes","patch_ids":["9e0469d680bf3f10ae246f4203e18c6c"],"related_changes":[{"db_id":"af2393fa28ddabfb7685be10e5240d35","evidence":{"patch_ids":["9e0469d680bf3f10ae246f4203e18c6c"],"same_day":true,"statement_hash":"53c7fc9ad7628d59f9ad822a34dba796bc338ed2df4185c35a1066a92c68f458"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"检测在对目录缓存条目的字段进行解压缩时该条目变为过期的另一种情况","url":"/docs/compare/?release=15.8#15.8-7abf34a46259074d","version":"15.8"},{"db_id":"ecd76c9cf55ed9bca0585834bde73361","evidence":{"patch_ids":["9e0469d680bf3f10ae246f4203e18c6c"],"same_day":true,"statement_hash":"53c7fc9ad7628d59f9ad822a34dba796bc338ed2df4185c35a1066a92c68f458"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"检测在对目录缓存条目的字段进行解压缩时该条目变为过期的另一种情况","url":"/docs/compare/?release=14.13#14.13-7abf34a46259074d","version":"14.13"},{"db_id":"f59220600eeba9606471f7e77870f509","evidence":{"patch_ids":["9e0469d680bf3f10ae246f4203e18c6c"],"same_day":true,"statement_hash":"53c7fc9ad7628d59f9ad822a34dba796bc338ed2df4185c35a1066a92c68f458"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"检测新目录缓存条目在展开其字段时变为过时的另一种情况","url":"/docs/compare/?release=13.16#13.16-df5e9f79a4fc281b","version":"13.16"},{"db_id":"830929c9da73d5fe2011b60418fa480e","evidence":{"patch_ids":["9e0469d680bf3f10ae246f4203e18c6c"],"same_day":true,"statement_hash":"53c7fc9ad7628d59f9ad822a34dba796bc338ed2df4185c35a1066a92c68f458"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"检测新目录缓存条目在展开其字段时变为过时的另一种情况","url":"/docs/compare/?release=12.20#12.20-881ee4c28496d044","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["9e0469d680bf3f10ae246f4203e18c6c"],"same_day":true,"statement_hash":"53c7fc9ad7628d59f9ad822a34dba796bc338ed2df4185c35a1066a92c68f458"},"rule":2,"target":"830929c9da73d5fe2011b60418fa480e","type":"equivalent"},{"evidence":{"patch_ids":["9e0469d680bf3f10ae246f4203e18c6c"],"same_day":true,"statement_hash":"53c7fc9ad7628d59f9ad822a34dba796bc338ed2df4185c35a1066a92c68f458"},"rule":2,"target":"af2393fa28ddabfb7685be10e5240d35","type":"equivalent"},{"evidence":{"patch_ids":["9e0469d680bf3f10ae246f4203e18c6c"],"same_day":true,"statement_hash":"53c7fc9ad7628d59f9ad822a34dba796bc338ed2df4185c35a1066a92c68f458"},"rule":2,"target":"ecd76c9cf55ed9bca0585834bde73361","type":"equivalent"},{"evidence":{"patch_ids":["9e0469d680bf3f10ae246f4203e18c6c"],"same_day":true,"statement_hash":"53c7fc9ad7628d59f9ad822a34dba796bc338ed2df4185c35a1066a92c68f458"},"rule":2,"target":"f59220600eeba9606471f7e77870f509","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["e4afd7153"],"source_entry_id":"16.4/changes/018","source_hash":"5b866aec7386067ff627d94c59a7ca2304245a96f60f051c44744a474bece100","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"53c7fc9ad7628d59f9ad822a34dba796bc338ed2df4185c35a1066a92c68f458","text":"检测在对目录缓存条目的字段进行解压缩时该条目变为过期的另一种情况（Noah Misch）§ 在展开目录元组的行外字段时发生的原地更新可能会被遗漏，导致目录缓存条目缺少原地更改但不被认为是过时的。这仅在 pg_database 目录中可能发生，因此影响范围较窄，但可能会导致异常行为。","title":"检测在对目录缓存条目的字段进行解压缩时该条目变为过期的另一种情况","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["041a00c48","0d712ec12","220003b9b","461f47948","96953052a","fd958bbbd","feca6c688"],"commit_groups":[["041a00c48","0d712ec12","220003b9b","461f47948","96953052a","fd958bbbd","feca6c688"]],"commits":["fd958bbbd"],"cves":[],"db_id":"b9e07521871f385832785a22eca4df7a","html":"\u003cp\u003e正确检查由 \u003ccode\u003eINSERT\u003c/code\u003e ... \u003ccode\u003eDEFAULT\u003c/code\u003e 目标的视图列的可更新性（Tom Lane）\u003ca href=\"https://postgr.es/c/fd958bbbd\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e如果这样的列不可更新，我们应该报告相应的错误。但该检查被遗漏了，随后的代码会报告一个不太有用的错误，如 \u003cspan\u003e“\u003cspan\u003eattribute number \u003cem\u003e\u003ccode\u003eN\u003c/code\u003e\u003c/em\u003e not found in view targetlist\u003c/span\u003e”\u003c/span\u003e。\u003c/p\u003e","id":"16.4-7077b3dde614dc32","identity_text":"Correctly check updatability of view columns targeted by INSERT ... DEFAULT (Tom Lane) If such a column is non-updatable, we should give an error reporting that. But the check was missed and then later code would report an unhelpful error such as attribute number N not found in view targetlist.","part":"changes","patch_ids":["a198179ea880e48023a3c6a4a679a2fb"],"related_changes":[{"db_id":"7ec1d620c6513334f1a7520c5f2b1323","evidence":{"patch_ids":["a198179ea880e48023a3c6a4a679a2fb"],"same_day":true,"statement_hash":"6e598f513c30570ffff8a50b2238fe8760dbb4c3de28bcd1a40d03409c65eba9"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"正确检查由 INSERT ... DEFAULT 目标的视图列的可更新性","url":"/docs/compare/?release=15.8#15.8-8f4156681cc1caf1","version":"15.8"},{"db_id":"f63c1f7e68ba3b3e9a01615c4eda6ee0","evidence":{"patch_ids":["a198179ea880e48023a3c6a4a679a2fb"],"same_day":true,"statement_hash":"6e598f513c30570ffff8a50b2238fe8760dbb4c3de28bcd1a40d03409c65eba9"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"正确检查由 INSERT ... DEFAULT 目标的视图列的可更新性","url":"/docs/compare/?release=14.13#14.13-4f50d08869bbda36","version":"14.13"},{"db_id":"140f114f6b31582a09a373258187e1dc","evidence":{"patch_ids":["a198179ea880e48023a3c6a4a679a2fb"],"same_day":true,"statement_hash":"6e598f513c30570ffff8a50b2238fe8760dbb4c3de28bcd1a40d03409c65eba9"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"正确检查由 INSERT ... DEFAULT 目标的视图列的可更新性","url":"/docs/compare/?release=13.16#13.16-f5d4a731a66a5824","version":"13.16"},{"db_id":"66c6478e3050450cfb1b9095f222d3b9","evidence":{"patch_ids":["a198179ea880e48023a3c6a4a679a2fb"],"same_day":true,"statement_hash":"6e598f513c30570ffff8a50b2238fe8760dbb4c3de28bcd1a40d03409c65eba9"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"正确检查由 INSERT ... DEFAULT 目标的视图列的可更新性","url":"/docs/compare/?release=12.20#12.20-26f4c6cff3b3fdb2","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["a198179ea880e48023a3c6a4a679a2fb"],"same_day":true,"statement_hash":"6e598f513c30570ffff8a50b2238fe8760dbb4c3de28bcd1a40d03409c65eba9"},"rule":2,"target":"140f114f6b31582a09a373258187e1dc","type":"equivalent"},{"evidence":{"patch_ids":["a198179ea880e48023a3c6a4a679a2fb"],"same_day":true,"statement_hash":"6e598f513c30570ffff8a50b2238fe8760dbb4c3de28bcd1a40d03409c65eba9"},"rule":2,"target":"66c6478e3050450cfb1b9095f222d3b9","type":"equivalent"},{"evidence":{"patch_ids":["a198179ea880e48023a3c6a4a679a2fb"],"same_day":true,"statement_hash":"6e598f513c30570ffff8a50b2238fe8760dbb4c3de28bcd1a40d03409c65eba9"},"rule":2,"target":"7ec1d620c6513334f1a7520c5f2b1323","type":"equivalent"},{"evidence":{"patch_ids":["a198179ea880e48023a3c6a4a679a2fb"],"same_day":true,"statement_hash":"6e598f513c30570ffff8a50b2238fe8760dbb4c3de28bcd1a40d03409c65eba9"},"rule":2,"target":"f63c1f7e68ba3b3e9a01615c4eda6ee0","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["fd958bbbd"],"source_entry_id":"16.4/changes/019","source_hash":"88289b07cd60e47d5ce48d9a1783bcadb50208f2044681685d1a6c41367ce0b7","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"6e598f513c30570ffff8a50b2238fe8760dbb4c3de28bcd1a40d03409c65eba9","text":"正确检查由 INSERT ... DEFAULT 目标的视图列的可更新性（Tom Lane）§ 如果这样的列不可更新，我们应该报告相应的错误。但该检查被遗漏了，随后的代码会报告一个不太有用的错误，如 “attribute number N not found in view targetlist”。","title":"正确检查由 INSERT ... DEFAULT 目标的视图列的可更新性","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["02b4f5e1f","236b225ed","8fc487614","b020a866a","cf588e10f","e7f9f44e3","f96c2c727"],"commit_groups":[["02b4f5e1f","236b225ed","8fc487614","b020a866a","cf588e10f","e7f9f44e3","f96c2c727"]],"commits":["8fc487614"],"cves":[],"db_id":"6405aeb7eaa07135a74929ee3f47d421","html":"\u003cp\u003e避免对不正确的递归查询报告无用的内部错误（Tom Lane）\u003ca href=\"https://postgr.es/c/8fc487614\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e重新排列错误检查的顺序，以便在 \u003ccode\u003eWITH RECURSIVE\u003c/code\u003e 查询在 \u003ccode\u003eUNION\u003c/code\u003e 的第二个分支中没有自引用，但在其他位置（如 \u003ccode\u003eORDER BY\u003c/code\u003e）有自引用时，抛出针对性的错误。\u003c/p\u003e","id":"16.4-43d06b240cafa53a","identity_text":"Avoid reporting an unhelpful internal error for incorrect recursive queries (Tom Lane) Rearrange the order of error checks so that we throw an on-point error when a WITH RECURSIVE query does not have a self-reference within the second arm of the UNION, but does have one self-reference in some other place such as ORDER BY.","part":"changes","patch_ids":["7d9a548feecb6f3d9d2bb7f0b653d8a1"],"related_changes":[{"db_id":"556a8a24b599163490bfdd11a1d771a8","evidence":{"patch_ids":["7d9a548feecb6f3d9d2bb7f0b653d8a1"],"same_day":true,"statement_hash":"dc256c3ef73cc88bdf4147126fce4e7741a58b055845da928c2af34275c7a39b"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"避免对不正确的递归查询报告无用的内部错误","url":"/docs/compare/?release=15.8#15.8-bcfea5ec3ffa9e82","version":"15.8"},{"db_id":"a1142d586d9e112a13977428a1e67eb2","evidence":{"patch_ids":["7d9a548feecb6f3d9d2bb7f0b653d8a1"],"same_day":true,"statement_hash":"dc256c3ef73cc88bdf4147126fce4e7741a58b055845da928c2af34275c7a39b"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"避免对不正确的递归查询报告无用的内部错误","url":"/docs/compare/?release=14.13#14.13-1b751427c1d25357","version":"14.13"},{"db_id":"3fbcca4a22669a9fc9f0c02a24221357","evidence":{"patch_ids":["7d9a548feecb6f3d9d2bb7f0b653d8a1"],"same_day":true,"statement_hash":"dc256c3ef73cc88bdf4147126fce4e7741a58b055845da928c2af34275c7a39b"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"避免对不正确的递归查询报告无用的内部错误","url":"/docs/compare/?release=13.16#13.16-e056f8ee7124b218","version":"13.16"},{"db_id":"c38a37e1ceb8ee43f66ba9dff029a276","evidence":{"patch_ids":["7d9a548feecb6f3d9d2bb7f0b653d8a1"],"same_day":true,"statement_hash":"dc256c3ef73cc88bdf4147126fce4e7741a58b055845da928c2af34275c7a39b"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"避免对不正确的递归查询报告无用的内部错误","url":"/docs/compare/?release=12.20#12.20-70f7ce9b1c2e7f24","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["7d9a548feecb6f3d9d2bb7f0b653d8a1"],"same_day":true,"statement_hash":"dc256c3ef73cc88bdf4147126fce4e7741a58b055845da928c2af34275c7a39b"},"rule":2,"target":"3fbcca4a22669a9fc9f0c02a24221357","type":"equivalent"},{"evidence":{"patch_ids":["7d9a548feecb6f3d9d2bb7f0b653d8a1"],"same_day":true,"statement_hash":"dc256c3ef73cc88bdf4147126fce4e7741a58b055845da928c2af34275c7a39b"},"rule":2,"target":"556a8a24b599163490bfdd11a1d771a8","type":"equivalent"},{"evidence":{"patch_ids":["7d9a548feecb6f3d9d2bb7f0b653d8a1"],"same_day":true,"statement_hash":"dc256c3ef73cc88bdf4147126fce4e7741a58b055845da928c2af34275c7a39b"},"rule":2,"target":"a1142d586d9e112a13977428a1e67eb2","type":"equivalent"},{"evidence":{"patch_ids":["7d9a548feecb6f3d9d2bb7f0b653d8a1"],"same_day":true,"statement_hash":"dc256c3ef73cc88bdf4147126fce4e7741a58b055845da928c2af34275c7a39b"},"rule":2,"target":"c38a37e1ceb8ee43f66ba9dff029a276","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["8fc487614"],"source_entry_id":"16.4/changes/020","source_hash":"f78709622cee29e6e71d05b9f2190b49012a46b8f8befef96bf123d23271456c","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"dc256c3ef73cc88bdf4147126fce4e7741a58b055845da928c2af34275c7a39b","text":"避免对不正确的递归查询报告无用的内部错误（Tom Lane）§ 重新排列错误检查的顺序，以便在 WITH RECURSIVE 查询在 UNION 的第二个分支中没有自引用，但在其他位置（如 ORDER BY）有自引用时，抛出针对性的错误。","title":"避免对不正确的递归查询报告无用的内部错误","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["112d05570","24561b498","f88cdb36c"],"commit_groups":[["112d05570","24561b498","f88cdb36c"]],"commits":["112d05570"],"cves":[],"db_id":"2734829445a10f36a8baf2a773f8bd1e","html":"\u003cp\u003e在 \u003ccode\u003eALTER TABLE SET LOGGED|UNLOGGED\u003c/code\u003e 期间锁定拥有的序列（Noah Misch）\u003ca href=\"https://postgr.es/c/112d05570\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这些命令会随表一起更改表所拥有的序列的持久性，但它们在执行时未能获取序列上的锁。这可能导致并发 \u003ccode\u003enextval()\u003c/code\u003e 调用的结果丢失。\u003c/p\u003e","id":"16.4-ffb2d9878f12b40f","identity_text":"Lock owned sequences during ALTER TABLE SET LOGGED|UNLOGGED (Noah Misch) These commands change the persistence of a table's owned sequences along with the table, but they failed to acquire lock on the sequences while doing so. This could result in losing the effects of concurrent nextval() calls.","part":"changes","patch_ids":["7b88eba712cf24e726848c532d5e7f53"],"related_changes":[{"db_id":"8d5c2a59d77817ffba817552b512f529","evidence":{"patch_ids":["7b88eba712cf24e726848c532d5e7f53"],"same_day":true,"statement_hash":"87eb46bdcfd2360c571c78f25b5f4ee7e260f5c3116506a3d78329527ed13138"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"在 ALTER TABLE SET LOGGED|UNLOGGED 期间锁定拥有的序列","url":"/docs/compare/?release=15.8#15.8-ffb2d9878f12b40f","version":"15.8"}],"relations":[{"evidence":{"patch_ids":["7b88eba712cf24e726848c532d5e7f53"],"same_day":true,"statement_hash":"87eb46bdcfd2360c571c78f25b5f4ee7e260f5c3116506a3d78329527ed13138"},"rule":2,"target":"8d5c2a59d77817ffba817552b512f529","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["112d05570"],"source_entry_id":"16.4/changes/021","source_hash":"96bac622dc18cd46213130c16faa8df6ecb125ac477060388915cfbf082056db","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"87eb46bdcfd2360c571c78f25b5f4ee7e260f5c3116506a3d78329527ed13138","text":"在 ALTER TABLE SET LOGGED|UNLOGGED 期间锁定拥有的序列（Noah Misch）§ 这些命令会随表一起更改表所拥有的序列的持久性，但它们在执行时未能获取序列上的锁。这可能导致并发 nextval() 调用的结果丢失。","title":"在 ALTER TABLE SET LOGGED|UNLOGGED 期间锁定拥有的序列","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["1424c7abc","4f1966676","88f3baa06","9ce8ee9d3","b0037bbef","e6d0d16ad"],"commit_groups":[["1424c7abc","4f1966676","88f3baa06","9ce8ee9d3","b0037bbef","e6d0d16ad"]],"commits":["4f1966676"],"cves":[],"db_id":"b8c31e1bacd217b9917a754ecc1e065c","html":"\u003cp\u003e当排队的 \u003ccode\u003eAFTER\u003c/code\u003e 触发器不再存在时不抛出错误（Tom Lane）\u003ca href=\"https://postgr.es/c/4f1966676\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e事务可能会执行一个操作将延迟的 \u003ccode\u003eAFTER\u003c/code\u003e 触发器排队等待后续执行，然后在触发器执行之前将其删除。之前这会导致诸如 \u003cspan\u003e“\u003cspan\u003ecould not find trigger \u003cem\u003e\u003ccode\u003eNNNN\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e”\u003c/span\u003e 之类的奇怪错误。如果触发器在应该执行的时间点已不存在，静默地不做任何操作似乎更好。\u003c/p\u003e","id":"16.4-cf6b64ca49024d5e","identity_text":"Don't throw an error if a queued AFTER trigger no longer exists (Tom Lane) It's possible for a transaction to execute an operation that queues a deferred AFTER trigger for later execution, and then to drop the trigger before that happens. Formerly this led to weird errors such as could not find trigger NNNN. It seems better to silently do nothing if the trigger no longer exists at the time when it would have been executed.","part":"changes","patch_ids":["0163624b9955360a21f25509538c27d0"],"related_changes":[{"db_id":"98a7fb70532763a4eb4a910d1c0c139f","evidence":{"patch_ids":["0163624b9955360a21f25509538c27d0"],"same_day":true,"statement_hash":"5e13a5b14c0c247484a8ef9937985269176a0adf0f975a4ee23469bc33ea8f28"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"当排队的 AFTER 触发器不再存在时不抛出错误","url":"/docs/compare/?release=15.8#15.8-cf6b64ca49024d5e","version":"15.8"},{"db_id":"36042d2839a821ebd37de2eba4e16619","evidence":{"patch_ids":["0163624b9955360a21f25509538c27d0"],"same_day":true,"statement_hash":"5e13a5b14c0c247484a8ef9937985269176a0adf0f975a4ee23469bc33ea8f28"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"当排队的 AFTER 触发器不再存在时不抛出错误","url":"/docs/compare/?release=14.13#14.13-cf6b64ca49024d5e","version":"14.13"},{"db_id":"f48d4eb23ab292e5214cb3a430d8abc1","evidence":{"patch_ids":["0163624b9955360a21f25509538c27d0"],"same_day":true,"statement_hash":"5e13a5b14c0c247484a8ef9937985269176a0adf0f975a4ee23469bc33ea8f28"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"如果已排队的 AFTER 触发器不再存在，不再抛出错误","url":"/docs/compare/?release=13.16#13.16-3139e130ec3107d7","version":"13.16"},{"db_id":"37ef6248b39fb4d3d30c9ebe7a989eb5","evidence":{"patch_ids":["0163624b9955360a21f25509538c27d0"],"same_day":true,"statement_hash":"5e13a5b14c0c247484a8ef9937985269176a0adf0f975a4ee23469bc33ea8f28"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"如果已排队的 AFTER 触发器不再存在，不再抛出错误","url":"/docs/compare/?release=12.20#12.20-d53868f061f982f5","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["0163624b9955360a21f25509538c27d0"],"same_day":true,"statement_hash":"5e13a5b14c0c247484a8ef9937985269176a0adf0f975a4ee23469bc33ea8f28"},"rule":2,"target":"36042d2839a821ebd37de2eba4e16619","type":"equivalent"},{"evidence":{"patch_ids":["0163624b9955360a21f25509538c27d0"],"same_day":true,"statement_hash":"5e13a5b14c0c247484a8ef9937985269176a0adf0f975a4ee23469bc33ea8f28"},"rule":2,"target":"37ef6248b39fb4d3d30c9ebe7a989eb5","type":"equivalent"},{"evidence":{"patch_ids":["0163624b9955360a21f25509538c27d0"],"same_day":true,"statement_hash":"5e13a5b14c0c247484a8ef9937985269176a0adf0f975a4ee23469bc33ea8f28"},"rule":2,"target":"98a7fb70532763a4eb4a910d1c0c139f","type":"equivalent"},{"evidence":{"patch_ids":["0163624b9955360a21f25509538c27d0"],"same_day":true,"statement_hash":"5e13a5b14c0c247484a8ef9937985269176a0adf0f975a4ee23469bc33ea8f28"},"rule":2,"target":"f48d4eb23ab292e5214cb3a430d8abc1","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["4f1966676"],"source_entry_id":"16.4/changes/022","source_hash":"4a216091c704b9f4eb2e72571d9f059732d30666a7eac47a64007e046cd77959","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"5e13a5b14c0c247484a8ef9937985269176a0adf0f975a4ee23469bc33ea8f28","text":"当排队的 AFTER 触发器不再存在时不抛出错误（Tom Lane）§ 事务可能会执行一个操作将延迟的 AFTER 触发器排队等待后续执行，然后在触发器执行之前将其删除。之前这会导致诸如 “could not find trigger NNNN” 之类的奇怪错误。如果触发器在应该执行的时间点已不存在，静默地不做任何操作似乎更好。","title":"当排队的 AFTER 触发器不再存在时不抛出错误","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["0a39343ae","198de7961","1f1eedd3f","76618097a","9cf4beb9e","f3f6a14ce"],"commit_groups":[["0a39343ae","198de7961","1f1eedd3f","76618097a","9cf4beb9e","f3f6a14ce"]],"commits":["9cf4beb9e"],"cves":[],"db_id":"3b780ebf464f9927f01b5c4d3ea76668","html":"\u003cp\u003e修复在删除表时未能移除 \u003ccode\u003epg_init_privs\u003c/code\u003e 中列级权限条目的问题（Tom Lane）\u003ca href=\"https://postgr.es/c/9cf4beb9e\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e如果扩展对其创建的表授予了某些列级权限，在删除该扩展后相关的目录条目会被保留。这在表的 OID 被另一个关系重新使用之前是无害的，届时它可能会干扰 \u003cspan\u003epg_dump\u003c/span\u003e 对该关系的导出。\u003c/p\u003e","id":"16.4-71b296d1b24a9a01","identity_text":"Fix failure to remove pg_init_privs entries for column-level privileges when their table is dropped (Tom Lane) If an extension grants some column-level privileges on a table it creates, relevant catalog entries would remain behind after the extension is dropped. This was harmless until/unless the table's OID was re-used for another relation, when it could interfere with what pg_dump dumps for that relation.","part":"changes","patch_ids":["3915e07b26b93b88feeee184d6868e91"],"related_changes":[{"db_id":"43cb111fec07d666a86bb5dec1743212","evidence":{"patch_ids":["3915e07b26b93b88feeee184d6868e91"],"same_day":true,"statement_hash":"86a340c26d60b26bbf6be9aeacefb9f4a7b7df6e492815c39d1a3d4e3c69f8dc"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复在删除表时未能移除 pg_init_privs 中列级权限条目的问题","url":"/docs/compare/?release=15.8#15.8-71b296d1b24a9a01","version":"15.8"},{"db_id":"6470611c068664c3130f11eb3f99f02c","evidence":{"patch_ids":["3915e07b26b93b88feeee184d6868e91"],"same_day":true,"statement_hash":"86a340c26d60b26bbf6be9aeacefb9f4a7b7df6e492815c39d1a3d4e3c69f8dc"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"修复在删除表时未能移除 pg_init_privs 中列级权限条目的问题","url":"/docs/compare/?release=14.13#14.13-71b296d1b24a9a01","version":"14.13"},{"db_id":"6d4174831ffae81637000b47a5310615","evidence":{"patch_ids":["3915e07b26b93b88feeee184d6868e91"],"same_day":true,"statement_hash":"86a340c26d60b26bbf6be9aeacefb9f4a7b7df6e492815c39d1a3d4e3c69f8dc"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"修复在删除表时未能移除 pg_init_privs 中列级权限条目的问题","url":"/docs/compare/?release=13.16#13.16-9149e5e4e63282af","version":"13.16"},{"db_id":"6cffd4781686867264b3fd95e7b5eb36","evidence":{"patch_ids":["3915e07b26b93b88feeee184d6868e91"],"same_day":true,"statement_hash":"86a340c26d60b26bbf6be9aeacefb9f4a7b7df6e492815c39d1a3d4e3c69f8dc"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"修复在删除表时未能移除 pg_init_privs 中列级权限条目的问题","url":"/docs/compare/?release=12.20#12.20-ee69d178bec8044e","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["3915e07b26b93b88feeee184d6868e91"],"same_day":true,"statement_hash":"86a340c26d60b26bbf6be9aeacefb9f4a7b7df6e492815c39d1a3d4e3c69f8dc"},"rule":2,"target":"43cb111fec07d666a86bb5dec1743212","type":"equivalent"},{"evidence":{"patch_ids":["3915e07b26b93b88feeee184d6868e91"],"same_day":true,"statement_hash":"86a340c26d60b26bbf6be9aeacefb9f4a7b7df6e492815c39d1a3d4e3c69f8dc"},"rule":2,"target":"6470611c068664c3130f11eb3f99f02c","type":"equivalent"},{"evidence":{"patch_ids":["3915e07b26b93b88feeee184d6868e91"],"same_day":true,"statement_hash":"86a340c26d60b26bbf6be9aeacefb9f4a7b7df6e492815c39d1a3d4e3c69f8dc"},"rule":2,"target":"6cffd4781686867264b3fd95e7b5eb36","type":"equivalent"},{"evidence":{"patch_ids":["3915e07b26b93b88feeee184d6868e91"],"same_day":true,"statement_hash":"86a340c26d60b26bbf6be9aeacefb9f4a7b7df6e492815c39d1a3d4e3c69f8dc"},"rule":2,"target":"6d4174831ffae81637000b47a5310615","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["9cf4beb9e"],"source_entry_id":"16.4/changes/023","source_hash":"918cc7411b7e6f5862f4605e20c306b89ca0b378e97aa2e90b178524ce41768a","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"86a340c26d60b26bbf6be9aeacefb9f4a7b7df6e492815c39d1a3d4e3c69f8dc","text":"修复在删除表时未能移除 pg_init_privs 中列级权限条目的问题（Tom Lane）§ 如果扩展对其创建的表授予了某些列级权限，在删除该扩展后相关的目录条目会被保留。这在表的 OID 被另一个关系重新使用之前是无害的，届时它可能会干扰 pg_dump 对该关系的导出。","title":"修复在删除表时未能移除 pg_init_privs 中列级权限条目的问题","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["096f2132c","1d0399b54","5e8aa32a9","915de706d","9256bf6eb","b188e1bf7"],"commit_groups":[["096f2132c","1d0399b54","5e8aa32a9","915de706d","9256bf6eb","b188e1bf7"]],"commits":["b188e1bf7"],"cves":[],"db_id":"6dbe809ce6df3085b985dfd63c93f518","html":"\u003cp\u003e修复当目标索引具有表达式或谓词时 \u003ccode\u003eON CONFLICT\u003c/code\u003e 仲裁索引的选择（Tom Lane）\u003ca href=\"https://postgr.es/c/b188e1bf7\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e如果使用 \u003ccode\u003eON CONFLICT\u003c/code\u003e 的查询通过可更新视图访问目标表，可能会失败并报告 \u003cspan\u003e“\u003cspan\u003ethere is no unique or exclusion constraint matching the ON CONFLICT specification\u003c/span\u003e”\u003c/span\u003e，即使存在匹配的索引。\u003c/p\u003e","id":"16.4-b0ddb361538ddbb1","identity_text":"Fix selection of an arbiter index for ON CONFLICT when the desired index has expressions or predicates (Tom Lane) If a query using ON CONFLICT accesses the target table through an updatable view, it could fail with there is no unique or exclusion constraint matching the ON CONFLICT specification, even though a matching index does exist.","part":"changes","patch_ids":["0bc97130751e42a86d19a4d553e4e7f3"],"related_changes":[{"db_id":"eccc12d087b0f8cfccf66b52f8642cd8","evidence":{"patch_ids":["0bc97130751e42a86d19a4d553e4e7f3"],"same_day":true,"statement_hash":"651831223905bf1579f6dc7b1718f73ec466e5d88e14d443a9c3d6c6b99c3266"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复当目标索引具有表达式或谓词时 ON CONFLICT 仲裁索引的选择","url":"/docs/compare/?release=15.8#15.8-b0ddb361538ddbb1","version":"15.8"},{"db_id":"9e4d1efd46ecb1f9bcd50b083efc9f7e","evidence":{"patch_ids":["0bc97130751e42a86d19a4d553e4e7f3"],"same_day":true,"statement_hash":"651831223905bf1579f6dc7b1718f73ec466e5d88e14d443a9c3d6c6b99c3266"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"修复当目标索引具有表达式或谓词时 ON CONFLICT 仲裁索引的选择","url":"/docs/compare/?release=14.13#14.13-b0ddb361538ddbb1","version":"14.13"},{"db_id":"9052455966f687b3285841904b12c534","evidence":{"patch_ids":["0bc97130751e42a86d19a4d553e4e7f3"],"same_day":true,"statement_hash":"651831223905bf1579f6dc7b1718f73ec466e5d88e14d443a9c3d6c6b99c3266"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"修复当所需索引具有表达式或谓词时 ON CONFLICT 的仲裁索引选择","url":"/docs/compare/?release=13.16#13.16-325cfe49d641774b","version":"13.16"},{"db_id":"2e556f7d1fc49bf3eab00fdda64129dc","evidence":{"patch_ids":["0bc97130751e42a86d19a4d553e4e7f3"],"same_day":true,"statement_hash":"651831223905bf1579f6dc7b1718f73ec466e5d88e14d443a9c3d6c6b99c3266"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"修复当所需索引具有表达式或谓词时 ON CONFLICT 的仲裁索引选择","url":"/docs/compare/?release=12.20#12.20-fc9cb206fd807563","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["0bc97130751e42a86d19a4d553e4e7f3"],"same_day":true,"statement_hash":"651831223905bf1579f6dc7b1718f73ec466e5d88e14d443a9c3d6c6b99c3266"},"rule":2,"target":"2e556f7d1fc49bf3eab00fdda64129dc","type":"equivalent"},{"evidence":{"patch_ids":["0bc97130751e42a86d19a4d553e4e7f3"],"same_day":true,"statement_hash":"651831223905bf1579f6dc7b1718f73ec466e5d88e14d443a9c3d6c6b99c3266"},"rule":2,"target":"9052455966f687b3285841904b12c534","type":"equivalent"},{"evidence":{"patch_ids":["0bc97130751e42a86d19a4d553e4e7f3"],"same_day":true,"statement_hash":"651831223905bf1579f6dc7b1718f73ec466e5d88e14d443a9c3d6c6b99c3266"},"rule":2,"target":"9e4d1efd46ecb1f9bcd50b083efc9f7e","type":"equivalent"},{"evidence":{"patch_ids":["0bc97130751e42a86d19a4d553e4e7f3"],"same_day":true,"statement_hash":"651831223905bf1579f6dc7b1718f73ec466e5d88e14d443a9c3d6c6b99c3266"},"rule":2,"target":"eccc12d087b0f8cfccf66b52f8642cd8","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["b188e1bf7"],"source_entry_id":"16.4/changes/024","source_hash":"fc55d662854e618f1d81c8e170c0e1d76e99605a59ce2e9ed3b89d03cd2b124e","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"651831223905bf1579f6dc7b1718f73ec466e5d88e14d443a9c3d6c6b99c3266","text":"修复当目标索引具有表达式或谓词时 ON CONFLICT 仲裁索引的选择（Tom Lane）§ 如果使用 ON CONFLICT 的查询通过可更新视图访问目标表，可能会失败并报告 “there is no unique or exclusion constraint matching the ON CONFLICT specification”，即使存在匹配的索引。","title":"修复当目标索引具有表达式或谓词时 ON CONFLICT 仲裁索引的选择","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["2dad0f433","3c71cb497","7c4ac652e","7ed8ce8a4","8397f161e","b8efd756d"],"commit_groups":[["2dad0f433","3c71cb497","7c4ac652e","7ed8ce8a4","8397f161e","b8efd756d"]],"commits":["8397f161e"],"cves":[],"db_id":"41e81c1e144b80cd53840599e298e741","html":"\u003cp\u003e拒绝使用 \u003ccode\u003eALTER TABLE\u003c/code\u003e 修改另一个会话的临时表（Tom Lane）\u003ca href=\"https://postgr.es/c/8397f161e\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e权限检查通常会阻止此类情况发生，但可以通过修改一个其子表是另一个会话的临时表的父表来达到此情况。如果我们发现这样的子表属于另一个会话，则抛出错误。\u003c/p\u003e","id":"16.4-4ce7f4a9264ab505","identity_text":"Refuse to modify a temporary table of another session with ALTER TABLE (Tom Lane) Permissions checks normally would prevent this case from arising, but it is possible to reach it by altering a parent table whose child is another session's temporary table. Throw an error if we discover that such a child table belongs to another session.","part":"changes","patch_ids":["290fcecff46eb2823aad296c96c0e2bc"],"related_changes":[{"db_id":"1983b6491c0deef6767c8ea6d7285996","evidence":{"patch_ids":["290fcecff46eb2823aad296c96c0e2bc"],"same_day":true,"statement_hash":"c7bd3278c5979562d90e9fab72f7830086dde53568336653325fba5a626da3ef"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"拒绝使用 ALTER TABLE 修改另一个会话的临时表","url":"/docs/compare/?release=15.8#15.8-4ce7f4a9264ab505","version":"15.8"},{"db_id":"8d9910ebff4ea90fbfe38b0c1910b701","evidence":{"patch_ids":["290fcecff46eb2823aad296c96c0e2bc"],"same_day":true,"statement_hash":"c7bd3278c5979562d90e9fab72f7830086dde53568336653325fba5a626da3ef"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"拒绝使用 ALTER TABLE 修改另一个会话的临时表","url":"/docs/compare/?release=14.13#14.13-4ce7f4a9264ab505","version":"14.13"},{"db_id":"51b850757ab02d17e5f509b67a427f25","evidence":{"patch_ids":["290fcecff46eb2823aad296c96c0e2bc"],"same_day":true,"statement_hash":"c7bd3278c5979562d90e9fab72f7830086dde53568336653325fba5a626da3ef"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"拒绝使用 ALTER TABLE 修改另一个会话的临时表","url":"/docs/compare/?release=13.16#13.16-3c6dc30d7ef89c30","version":"13.16"},{"db_id":"4399fe2876f4be8dfecaa987d5601c8f","evidence":{"patch_ids":["290fcecff46eb2823aad296c96c0e2bc"],"same_day":true,"statement_hash":"c7bd3278c5979562d90e9fab72f7830086dde53568336653325fba5a626da3ef"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"拒绝使用 ALTER TABLE 修改另一个会话的临时表","url":"/docs/compare/?release=12.20#12.20-b0af490c299b8c0e","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["290fcecff46eb2823aad296c96c0e2bc"],"same_day":true,"statement_hash":"c7bd3278c5979562d90e9fab72f7830086dde53568336653325fba5a626da3ef"},"rule":2,"target":"1983b6491c0deef6767c8ea6d7285996","type":"equivalent"},{"evidence":{"patch_ids":["290fcecff46eb2823aad296c96c0e2bc"],"same_day":true,"statement_hash":"c7bd3278c5979562d90e9fab72f7830086dde53568336653325fba5a626da3ef"},"rule":2,"target":"4399fe2876f4be8dfecaa987d5601c8f","type":"equivalent"},{"evidence":{"patch_ids":["290fcecff46eb2823aad296c96c0e2bc"],"same_day":true,"statement_hash":"c7bd3278c5979562d90e9fab72f7830086dde53568336653325fba5a626da3ef"},"rule":2,"target":"51b850757ab02d17e5f509b67a427f25","type":"equivalent"},{"evidence":{"patch_ids":["290fcecff46eb2823aad296c96c0e2bc"],"same_day":true,"statement_hash":"c7bd3278c5979562d90e9fab72f7830086dde53568336653325fba5a626da3ef"},"rule":2,"target":"8d9910ebff4ea90fbfe38b0c1910b701","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["8397f161e"],"source_entry_id":"16.4/changes/025","source_hash":"ab7b49624e9bb2a1adebdc58d36ab112d5a0d1e3b6a2b22f401bbb15454e77ff","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"c7bd3278c5979562d90e9fab72f7830086dde53568336653325fba5a626da3ef","text":"拒绝使用 ALTER TABLE 修改另一个会话的临时表（Tom Lane）§ 权限检查通常会阻止此类情况发生，但可以通过修改一个其子表是另一个会话的临时表的父表来达到此情况。如果我们发现这样的子表属于另一个会话，则抛出错误。","title":"拒绝使用 ALTER TABLE 修改另一个会话的临时表","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["1015162c3","2aa90c02d","2f3cfcf76","5278668d7"],"commit_groups":[["1015162c3","2aa90c02d","2f3cfcf76","5278668d7"]],"commits":["2aa90c02d"],"cves":[],"db_id":"cf97f7083008a790aaee1afe9c380d63","html":"\u003cp\u003e修复 \u003ccode\u003eCREATE TABLE LIKE STATISTICS\u003c/code\u003e 中对表达式上扩展统计信息的处理（Tom Lane）\u003ca href=\"https://postgr.es/c/2aa90c02d\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eCREATE\u003c/code\u003e 命令未能将统计表达式中的列引用调整为新表可能不同的列编号。这会产生无效的统计对象，在后续操作中造成问题。需要重新编号列的典型场景是源表包含一些已删除的列。\u003c/p\u003e","id":"16.4-ed4fbc9f9d170f43","identity_text":"Fix handling of extended statistics on expressions in CREATE TABLE LIKE STATISTICS (Tom Lane) The CREATE command failed to adjust column references in statistics expressions to the possibly-different column numbering of the new table. This resulted in invalid statistics objects that would cause problems later. A typical scenario where renumbering columns is needed is when the source table contains some dropped columns.","part":"changes","patch_ids":["3769efad517992dcebedc1e7e741993c"],"related_changes":[{"db_id":"47d0eff1df267e151f3034829a379d19","evidence":{"patch_ids":["3769efad517992dcebedc1e7e741993c"],"same_day":true,"statement_hash":"311c26ed7019286d6f6658b7d65784dd37ac8b8dc9ef85a341bc1179d4cceec9"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复 CREATE TABLE LIKE STATISTICS 中对表达式上扩展统计信息的处理","url":"/docs/compare/?release=15.8#15.8-ed4fbc9f9d170f43","version":"15.8"},{"db_id":"776851e21aa35ca46b0ba39e5b01e03a","evidence":{"patch_ids":["3769efad517992dcebedc1e7e741993c"],"same_day":true,"statement_hash":"311c26ed7019286d6f6658b7d65784dd37ac8b8dc9ef85a341bc1179d4cceec9"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"修复 CREATE TABLE LIKE STATISTICS 中对表达式上扩展统计信息的处理","url":"/docs/compare/?release=14.13#14.13-ed4fbc9f9d170f43","version":"14.13"}],"relations":[{"evidence":{"patch_ids":["3769efad517992dcebedc1e7e741993c"],"same_day":true,"statement_hash":"311c26ed7019286d6f6658b7d65784dd37ac8b8dc9ef85a341bc1179d4cceec9"},"rule":2,"target":"47d0eff1df267e151f3034829a379d19","type":"equivalent"},{"evidence":{"patch_ids":["3769efad517992dcebedc1e7e741993c"],"same_day":true,"statement_hash":"311c26ed7019286d6f6658b7d65784dd37ac8b8dc9ef85a341bc1179d4cceec9"},"rule":2,"target":"776851e21aa35ca46b0ba39e5b01e03a","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["2aa90c02d"],"source_entry_id":"16.4/changes/026","source_hash":"9966f46b2b4209856937fd59a20f241f88a304f51b1d515ae1ddfcaa011cc344","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"311c26ed7019286d6f6658b7d65784dd37ac8b8dc9ef85a341bc1179d4cceec9","text":"修复 CREATE TABLE LIKE STATISTICS 中对表达式上扩展统计信息的处理（Tom Lane）§ CREATE 命令未能将统计表达式中的列引用调整为新表可能不同的列编号。这会产生无效的统计对象，在后续操作中造成问题。需要重新编号列的典型场景是源表包含一些已删除的列。","title":"修复 CREATE TABLE LIKE STATISTICS 中对表达式上扩展统计信息的处理","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["4ac385adc","5ac340602","686c995fc","779ac2c74","7f90a5dc3","ce0d16544","d0d44049d"],"commit_groups":[["4ac385adc","5ac340602","686c995fc","779ac2c74","7f90a5dc3","ce0d16544"],["d0d44049d"]],"commits":["ce0d16544"],"cves":[],"db_id":"0705db743840b66e1b587ae490755245","html":"\u003cp\u003e修复从 \u003ccode\u003eMIN()\u003c/code\u003e 或 \u003ccode\u003eMAX()\u003c/code\u003e 聚合生成的子查询未能重新计算的问题（Tom Lane）\u003ca href=\"https://postgr.es/c/ce0d16544\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e在某些情况下，在外部查询的某一行计算出的聚合结果可能会被后续行错误地重用。目前仅在外部查询使用以 hash 聚合实现的 \u003ccode\u003eDISTINCT\u003c/code\u003e 时观察到此问题，但可能存在其他情况。\u003c/p\u003e","id":"16.4-95d803166d63086e","identity_text":"Fix failure to recalculate sub-queries generated from MIN() or MAX() aggregates (Tom Lane) In some cases the aggregate result computed at one row of the outer query could be re-used for later rows when it should not be. This has only been seen to happen when the outer query uses DISTINCT that is implemented with hash aggregation, but other cases may exist.","part":"changes","patch_ids":["0c16d646655ac398dfa4ba6f881bfb82","99d490781771c7c4b671fbe56a247d92"],"related_changes":[{"db_id":"11d64e1c0fd36a7ae3fc890515d7dad8","evidence":{"patch_ids":["0c16d646655ac398dfa4ba6f881bfb82","99d490781771c7c4b671fbe56a247d92"],"same_day":true,"statement_hash":"4d84c9e6aede63335d920e32cb3e2fae44f82a195a0f30474f6dbcdecaf68da7"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复从 MIN() 或 MAX() 聚合生成的子查询未能重新计算的问题","url":"/docs/compare/?release=15.8#15.8-95d803166d63086e","version":"15.8"},{"db_id":"7227842aa76ee777f93cb314a65c0f52","evidence":{"patch_ids":["0c16d646655ac398dfa4ba6f881bfb82","99d490781771c7c4b671fbe56a247d92"],"same_day":true,"statement_hash":"4d84c9e6aede63335d920e32cb3e2fae44f82a195a0f30474f6dbcdecaf68da7"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"修复从 MIN() 或 MAX() 聚合生成的子查询未能重新计算的问题","url":"/docs/compare/?release=14.13#14.13-95d803166d63086e","version":"14.13"},{"db_id":"0a4fec062451a66a6d2294e0d079beac","evidence":{"patch_ids":["0c16d646655ac398dfa4ba6f881bfb82","99d490781771c7c4b671fbe56a247d92"],"same_day":true,"statement_hash":"4d84c9e6aede63335d920e32cb3e2fae44f82a195a0f30474f6dbcdecaf68da7"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"修复从 MIN() 或 MAX() 聚合生成的子查询未能重新计算的问题","url":"/docs/compare/?release=13.16#13.16-b655fd3d8dd75b84","version":"13.16"},{"db_id":"7fe9fcd6e501bc3a3820eea26cb55c66","evidence":{"patch_ids":["0c16d646655ac398dfa4ba6f881bfb82","99d490781771c7c4b671fbe56a247d92"],"same_day":true,"statement_hash":"4d84c9e6aede63335d920e32cb3e2fae44f82a195a0f30474f6dbcdecaf68da7"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"修复从 MIN() 或 MAX() 聚合生成的子查询未能重新计算的问题","url":"/docs/compare/?release=12.20#12.20-deec83722c172dc8","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["0c16d646655ac398dfa4ba6f881bfb82","99d490781771c7c4b671fbe56a247d92"],"same_day":true,"statement_hash":"4d84c9e6aede63335d920e32cb3e2fae44f82a195a0f30474f6dbcdecaf68da7"},"rule":2,"target":"0a4fec062451a66a6d2294e0d079beac","type":"equivalent"},{"evidence":{"patch_ids":["0c16d646655ac398dfa4ba6f881bfb82","99d490781771c7c4b671fbe56a247d92"],"same_day":true,"statement_hash":"4d84c9e6aede63335d920e32cb3e2fae44f82a195a0f30474f6dbcdecaf68da7"},"rule":2,"target":"11d64e1c0fd36a7ae3fc890515d7dad8","type":"equivalent"},{"evidence":{"patch_ids":["0c16d646655ac398dfa4ba6f881bfb82","99d490781771c7c4b671fbe56a247d92"],"same_day":true,"statement_hash":"4d84c9e6aede63335d920e32cb3e2fae44f82a195a0f30474f6dbcdecaf68da7"},"rule":2,"target":"7227842aa76ee777f93cb314a65c0f52","type":"equivalent"},{"evidence":{"patch_ids":["0c16d646655ac398dfa4ba6f881bfb82","99d490781771c7c4b671fbe56a247d92"],"same_day":true,"statement_hash":"4d84c9e6aede63335d920e32cb3e2fae44f82a195a0f30474f6dbcdecaf68da7"},"rule":2,"target":"7fe9fcd6e501bc3a3820eea26cb55c66","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["ce0d16544","d0d44049d"],"source_entry_id":"16.4/changes/027","source_hash":"9bde527f0f43bd9fcc047052d63c9050fe908547204a2a39da4193b14658562b","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"4d84c9e6aede63335d920e32cb3e2fae44f82a195a0f30474f6dbcdecaf68da7","text":"修复从 MIN() 或 MAX() 聚合生成的子查询未能重新计算的问题（Tom Lane）§ 在某些情况下，在外部查询的某一行计算出的聚合结果可能会被后续行错误地重用。目前仅在外部查询使用以 hash 聚合实现的 DISTINCT 时观察到此问题，但可能存在其他情况。","title":"修复从 MIN() 或 MAX() 聚合生成的子查询未能重新计算的问题","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["315661eca","98b4f53d1"],"commit_groups":[["315661eca","98b4f53d1"]],"commits":["315661eca"],"cves":[],"db_id":"c2fb8bd394e5c5cc25d2399781e62c9d","html":"\u003cp\u003e重新禁止位置参数中包含下划线（Erik Wienhold）\u003ca href=\"https://postgr.es/c/315661eca\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e从 v16 开始我们允许整数字面量包含下划线。此更改导致诸如 \u003ccode\u003e$1_234\u003c/code\u003e 之类的输入被当作单个标记处理，但它不能正确工作。恢复到原始定义似乎更好，即参数符号仅为 \u003ccode\u003e$\u003c/code\u003e 后跟数字。\u003c/p\u003e","id":"16.4-aa733d18519ea11b","identity_text":"Re-forbid underscore in positional parameters (Erik Wienhold) As of v16 we allow integer literals to contain underscores. This change caused input such as $1_234 to be taken as a single token, but it did not work correctly. It seems better to revert to the original definition in which a parameter symbol is only $ followed by digits.","part":"changes","patch_ids":["4d16b2de12d90984d7f0711861a393cd"],"related_changes":[],"relations":[],"section":"变更","section_path":["变更"],"source_commits":["315661eca"],"source_entry_id":"16.4/changes/028","source_hash":"096b1736aa26c78cd60368823cadb488f5c366f4b380a9b3a804fd7eb549ef60","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"0d837440c1794f85ea59aaaae5ffa9388f5ffb0fb01739239493639d2f662502","text":"重新禁止位置参数中包含下划线（Erik Wienhold）§ 从 v16 开始我们允许整数字面量包含下划线。此更改导致诸如 $1_234 之类的输入被当作单个标记处理，但它不能正确工作。恢复到原始定义似乎更好，即参数符号仅为 $ 后跟数字。","title":"重新禁止位置参数中包含下划线","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["07d66d3cc","13abc1f66","5401e70e4","5d6c64d29","86fac88ee","dccda847b"],"commit_groups":[["07d66d3cc","13abc1f66","5401e70e4","5d6c64d29","86fac88ee","dccda847b"]],"commits":["07d66d3cc"],"cves":[],"db_id":"84f5d4026e74111c68b10db90271bba5","html":"\u003cp\u003e避免在 JIT 内联的后端函数抛出错误时崩溃（Tom Lane）\u003ca href=\"https://postgr.es/c/07d66d3cc\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e错误状态可以包含指向持有 JIT 编译代码的动态加载模块的指针（用于错误位置字符串）。在某些代码路径中，模块可能在错误报告被处理之前被卸载，导致访问位置字符串时出现 SIGSEGV。\u003c/p\u003e","id":"16.4-cf25ec7b08f3326c","identity_text":"Avoid crashing when a JIT-inlined backend function throws an error (Tom Lane) The error state can include pointers into the dynamically loaded module holding the JIT-compiled code (for error location strings). In some code paths the module could get unloaded before the error report is processed, leading to SIGSEGV when the location strings are accessed.","part":"changes","patch_ids":["8061f5a02c1df9d8d56b8123b8cd1591"],"related_changes":[{"db_id":"ae9906a0f31ecf76e1ea31a6f249d747","evidence":{"patch_ids":["8061f5a02c1df9d8d56b8123b8cd1591"],"same_day":true,"statement_hash":"4620561b314b0e9436b5ad7e019d59c9631e86d23581531f97bc29873df333d2"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"避免在 JIT 内联的后端函数抛出错误时崩溃","url":"/docs/compare/?release=15.8#15.8-cf25ec7b08f3326c","version":"15.8"},{"db_id":"8cb79c4f08d8cb77f9647cdad2d34c19","evidence":{"patch_ids":["8061f5a02c1df9d8d56b8123b8cd1591"],"same_day":true,"statement_hash":"4620561b314b0e9436b5ad7e019d59c9631e86d23581531f97bc29873df333d2"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"避免在 JIT 内联的后端函数抛出错误时崩溃","url":"/docs/compare/?release=14.13#14.13-cf25ec7b08f3326c","version":"14.13"},{"db_id":"56a4362bbbb6ba3736c130cfa08a59fe","evidence":{"patch_ids":["8061f5a02c1df9d8d56b8123b8cd1591"],"same_day":true,"statement_hash":"4620561b314b0e9436b5ad7e019d59c9631e86d23581531f97bc29873df333d2"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"避免在 JIT 内联的后端函数抛出错误时崩溃","url":"/docs/compare/?release=13.16#13.16-1d7af98af834d1ea","version":"13.16"},{"db_id":"817329cfdffc2f7cc4012498db50e000","evidence":{"patch_ids":["8061f5a02c1df9d8d56b8123b8cd1591"],"same_day":true,"statement_hash":"4620561b314b0e9436b5ad7e019d59c9631e86d23581531f97bc29873df333d2"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"避免在 JIT 内联的后端函数抛出错误时崩溃","url":"/docs/compare/?release=12.20#12.20-2fcfb368f059849b","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["8061f5a02c1df9d8d56b8123b8cd1591"],"same_day":true,"statement_hash":"4620561b314b0e9436b5ad7e019d59c9631e86d23581531f97bc29873df333d2"},"rule":2,"target":"56a4362bbbb6ba3736c130cfa08a59fe","type":"equivalent"},{"evidence":{"patch_ids":["8061f5a02c1df9d8d56b8123b8cd1591"],"same_day":true,"statement_hash":"4620561b314b0e9436b5ad7e019d59c9631e86d23581531f97bc29873df333d2"},"rule":2,"target":"817329cfdffc2f7cc4012498db50e000","type":"equivalent"},{"evidence":{"patch_ids":["8061f5a02c1df9d8d56b8123b8cd1591"],"same_day":true,"statement_hash":"4620561b314b0e9436b5ad7e019d59c9631e86d23581531f97bc29873df333d2"},"rule":2,"target":"8cb79c4f08d8cb77f9647cdad2d34c19","type":"equivalent"},{"evidence":{"patch_ids":["8061f5a02c1df9d8d56b8123b8cd1591"],"same_day":true,"statement_hash":"4620561b314b0e9436b5ad7e019d59c9631e86d23581531f97bc29873df333d2"},"rule":2,"target":"ae9906a0f31ecf76e1ea31a6f249d747","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["07d66d3cc"],"source_entry_id":"16.4/changes/029","source_hash":"63187e47030664d170569517086a13d59002971e63e627081b073e6be2ab904a","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"4620561b314b0e9436b5ad7e019d59c9631e86d23581531f97bc29873df333d2","text":"避免在 JIT 内联的后端函数抛出错误时崩溃（Tom Lane）§ 错误状态可以包含指向持有 JIT 编译代码的动态加载模块的指针（用于错误位置字符串）。在某些代码路径中，模块可能在错误报告被处理之前被卸载，导致访问位置字符串时出现 SIGSEGV。","title":"避免在 JIT 内联的后端函数抛出错误时崩溃","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["066e8ac6e","475e1807c","48132587d","6082b3d5d","896cd266f","a134baea7","a9747be27","e7192486d","f68d6aabb","f85c91a18"],"commit_groups":[["066e8ac6e"],["475e1807c","48132587d","896cd266f","a134baea7","a9747be27","f68d6aabb","f85c91a18"],["6082b3d5d"],["e7192486d"]],"commits":["f85c91a18"],"cves":[],"db_id":"79a9fe0e7ac2f3dd9d113a8e5b3adbec","html":"\u003cp\u003e应对 \u003cspan\u003elibxml2\u003c/span\u003e 版本 2.13.x 中的行为变更（Erik Wienhold，Tom Lane）\u003ca href=\"https://postgr.es/c/f85c91a18\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e值得注意的是，我们现在会抑制来自 \u003cspan\u003elibxml2\u003c/span\u003e 的 \u003cspan\u003e“\u003cspan\u003echunk is not well balanced\u003c/span\u003e”\u003c/span\u003e 错误，除非这是唯一报告的错误。这是为了使 2.13.x 和更早版本的 \u003cspan\u003elibxml2\u003c/span\u003e 之间的错误报告保持一致。在更早的版本中，该消息几乎总是冗余的或完全不正确的，因此 2.13.x 大幅减少了报告该消息的情况。\u003c/p\u003e","id":"16.4-c19f65f66efb16cb","identity_text":"Cope with behavioral changes in libxml2 version 2.13.x (Erik Wienhold, Tom Lane) Notably, we now suppress chunk is not well balanced errors from libxml2, unless that is the only reported error. This is to make error reports consistent between 2.13.x and earlier libxml2 versions. In earlier versions, that message was almost always redundant or outright incorrect, so 2.13.x substantially reduced the number of cases in which it's reported.","part":"changes","patch_ids":["37c99d6b681d2052b6bf7d426058c9e4","629aacf9d5e1df138d1c49c2a315d4e7","d750da5a021aaa9bc4bd42d5d3dc1844","f188736123ed999044a6d34c7d1d446b"],"related_changes":[{"db_id":"bf592a68c6f6698e8fc5f939ede6c4d8","evidence":{"patch_ids":["37c99d6b681d2052b6bf7d426058c9e4","629aacf9d5e1df138d1c49c2a315d4e7","d750da5a021aaa9bc4bd42d5d3dc1844","f188736123ed999044a6d34c7d1d446b"],"same_day":true,"statement_hash":"3d910b586cd43953b42f9e34ce07a33cab8107a0d34d01f35c704a1ee64abed4"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"应对 libxml2 版本 2.13.x 中的行为变更","url":"/docs/compare/?release=15.8#15.8-1e092af3f3653c6a","version":"15.8"},{"db_id":"7795621993aa544ecd06ce727c6e8456","evidence":{"patch_ids":["37c99d6b681d2052b6bf7d426058c9e4","629aacf9d5e1df138d1c49c2a315d4e7","d750da5a021aaa9bc4bd42d5d3dc1844","f188736123ed999044a6d34c7d1d446b"],"same_day":true,"statement_hash":"3d910b586cd43953b42f9e34ce07a33cab8107a0d34d01f35c704a1ee64abed4"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"应对 libxml2 版本 2.13.x 中的行为变更","url":"/docs/compare/?release=14.13#14.13-b9535a14f6b36dcb","version":"14.13"},{"db_id":"c3e1d68dd0b143d0dc9b120907c4b606","evidence":{"patch_ids":["37c99d6b681d2052b6bf7d426058c9e4","629aacf9d5e1df138d1c49c2a315d4e7","d750da5a021aaa9bc4bd42d5d3dc1844","f188736123ed999044a6d34c7d1d446b"],"same_day":true,"statement_hash":"3d910b586cd43953b42f9e34ce07a33cab8107a0d34d01f35c704a1ee64abed4"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"应对 libxml2 版本 2.13.x 中的行为变更","url":"/docs/compare/?release=13.16#13.16-44e5561a5e303592","version":"13.16"},{"db_id":"96975460aa783512c152bc9b6c50458a","evidence":{"patch_ids":["37c99d6b681d2052b6bf7d426058c9e4","629aacf9d5e1df138d1c49c2a315d4e7","d750da5a021aaa9bc4bd42d5d3dc1844","f188736123ed999044a6d34c7d1d446b"],"same_day":true,"statement_hash":"3d910b586cd43953b42f9e34ce07a33cab8107a0d34d01f35c704a1ee64abed4"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"应对 libxml2 版本 2.13.x 中的行为变更","url":"/docs/compare/?release=12.20#12.20-da101a6623b90355","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["37c99d6b681d2052b6bf7d426058c9e4","629aacf9d5e1df138d1c49c2a315d4e7","d750da5a021aaa9bc4bd42d5d3dc1844","f188736123ed999044a6d34c7d1d446b"],"same_day":true,"statement_hash":"3d910b586cd43953b42f9e34ce07a33cab8107a0d34d01f35c704a1ee64abed4"},"rule":2,"target":"7795621993aa544ecd06ce727c6e8456","type":"equivalent"},{"evidence":{"patch_ids":["37c99d6b681d2052b6bf7d426058c9e4","629aacf9d5e1df138d1c49c2a315d4e7","d750da5a021aaa9bc4bd42d5d3dc1844","f188736123ed999044a6d34c7d1d446b"],"same_day":true,"statement_hash":"3d910b586cd43953b42f9e34ce07a33cab8107a0d34d01f35c704a1ee64abed4"},"rule":2,"target":"96975460aa783512c152bc9b6c50458a","type":"equivalent"},{"evidence":{"patch_ids":["37c99d6b681d2052b6bf7d426058c9e4","629aacf9d5e1df138d1c49c2a315d4e7","d750da5a021aaa9bc4bd42d5d3dc1844","f188736123ed999044a6d34c7d1d446b"],"same_day":true,"statement_hash":"3d910b586cd43953b42f9e34ce07a33cab8107a0d34d01f35c704a1ee64abed4"},"rule":2,"target":"bf592a68c6f6698e8fc5f939ede6c4d8","type":"equivalent"},{"evidence":{"patch_ids":["37c99d6b681d2052b6bf7d426058c9e4","629aacf9d5e1df138d1c49c2a315d4e7","d750da5a021aaa9bc4bd42d5d3dc1844","f188736123ed999044a6d34c7d1d446b"],"same_day":true,"statement_hash":"3d910b586cd43953b42f9e34ce07a33cab8107a0d34d01f35c704a1ee64abed4"},"rule":2,"target":"c3e1d68dd0b143d0dc9b120907c4b606","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["066e8ac6e","6082b3d5d","e7192486d","f85c91a18"],"source_entry_id":"16.4/changes/030","source_hash":"42c00c4ced55c5889f7c4e821ba6f2c4b4dae1e05708fe4664f2bf9ebe7d025a","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"3d910b586cd43953b42f9e34ce07a33cab8107a0d34d01f35c704a1ee64abed4","text":"应对 libxml2 版本 2.13.x 中的行为变更（Erik Wienhold，Tom Lane）§ 值得注意的是，我们现在会抑制来自 libxml2 的 “chunk is not well balanced” 错误，除非这是唯一报告的错误。这是为了使 2.13.x 和更早版本的 libxml2 之间的错误报告保持一致。在更早的版本中，该消息几乎总是冗余的或完全不正确的，因此 2.13.x 大幅减少了报告该消息的情况。","title":"应对 libxml2 版本 2.13.x 中的行为变更","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["0e2f3d78b","5dea6628b","9dbf8ab48","b5b418b68","cbfbda784","e9c8747ee"],"commit_groups":[["0e2f3d78b","5dea6628b","9dbf8ab48","b5b418b68","cbfbda784","e9c8747ee"]],"commits":["b5b418b68"],"cves":[],"db_id":"66029534417861b20daa965c467fda63","html":"\u003cp\u003e修复启动热备服务器时预备事务的子事务处理（Heikki Linnakangas）\u003ca href=\"https://postgr.es/c/b5b418b68\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e当备库在关机检查点 WAL 记录处开始回放时，在主库上已预备但尚未提交的事务会被正确地理解为仍在进行中。但预备事务的子事务（由保存点或 \u003cspan\u003ePL/pgSQL\u003c/span\u003e 异常块创建）未被考虑，会被当作已中止的事务处理。如果预备事务随后被提交，就会导致不一致。\u003c/p\u003e","id":"16.4-73a2e8a89c943342","identity_text":"Fix handling of subtransactions of prepared transactions when starting a hot standby server (Heikki Linnakangas) When starting a standby's replay at a shutdown checkpoint WAL record, transactions that had been prepared but not yet committed on the primary are correctly understood as being still in progress. But subtransactions of a prepared transaction (created by savepoints or PL/pgSQL exception blocks) were not accounted for and would be treated as aborted. That led to inconsistency if the prepared transaction was later committed.","part":"changes","patch_ids":["903d1e081712f6e493da35eca18db280"],"related_changes":[{"db_id":"75f7406ca226a47dd96f203cdf0bdfda","evidence":{"patch_ids":["903d1e081712f6e493da35eca18db280"],"same_day":true,"statement_hash":"4ced749c9db1f39b7fea3a9d281066cc68e29a4bca7241300775834bca86f96a"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复启动热备服务器时预备事务的子事务处理","url":"/docs/compare/?release=15.8#15.8-73a2e8a89c943342","version":"15.8"},{"db_id":"1d5c68552426f7a688acc9f556a5208b","evidence":{"patch_ids":["903d1e081712f6e493da35eca18db280"],"same_day":true,"statement_hash":"4ced749c9db1f39b7fea3a9d281066cc68e29a4bca7241300775834bca86f96a"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"修复启动热备服务器时预备事务的子事务处理","url":"/docs/compare/?release=14.13#14.13-73a2e8a89c943342","version":"14.13"},{"db_id":"c820f7d1b7ff7adafc564e87d0542403","evidence":{"patch_ids":["903d1e081712f6e493da35eca18db280"],"same_day":true,"statement_hash":"4ced749c9db1f39b7fea3a9d281066cc68e29a4bca7241300775834bca86f96a"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"修复启动热备服务器时对预备事务的子事务的处理","url":"/docs/compare/?release=13.16#13.16-7686fdd2208f0c06","version":"13.16"},{"db_id":"f74676068a4dc67b60724d6dd3992bf1","evidence":{"patch_ids":["903d1e081712f6e493da35eca18db280"],"same_day":true,"statement_hash":"4ced749c9db1f39b7fea3a9d281066cc68e29a4bca7241300775834bca86f96a"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"修复启动热备服务器时对预备事务的子事务的处理","url":"/docs/compare/?release=12.20#12.20-20ea6a9b42ed23b7","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["903d1e081712f6e493da35eca18db280"],"same_day":true,"statement_hash":"4ced749c9db1f39b7fea3a9d281066cc68e29a4bca7241300775834bca86f96a"},"rule":2,"target":"1d5c68552426f7a688acc9f556a5208b","type":"equivalent"},{"evidence":{"patch_ids":["903d1e081712f6e493da35eca18db280"],"same_day":true,"statement_hash":"4ced749c9db1f39b7fea3a9d281066cc68e29a4bca7241300775834bca86f96a"},"rule":2,"target":"75f7406ca226a47dd96f203cdf0bdfda","type":"equivalent"},{"evidence":{"patch_ids":["903d1e081712f6e493da35eca18db280"],"same_day":true,"statement_hash":"4ced749c9db1f39b7fea3a9d281066cc68e29a4bca7241300775834bca86f96a"},"rule":2,"target":"c820f7d1b7ff7adafc564e87d0542403","type":"equivalent"},{"evidence":{"patch_ids":["903d1e081712f6e493da35eca18db280"],"same_day":true,"statement_hash":"4ced749c9db1f39b7fea3a9d281066cc68e29a4bca7241300775834bca86f96a"},"rule":2,"target":"f74676068a4dc67b60724d6dd3992bf1","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["b5b418b68"],"source_entry_id":"16.4/changes/031","source_hash":"d0993a78f90c3d8a380519523502971e4769a60159ea428611019505167725be","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"4ced749c9db1f39b7fea3a9d281066cc68e29a4bca7241300775834bca86f96a","text":"修复启动热备服务器时预备事务的子事务处理（Heikki Linnakangas）§ 当备库在关机检查点 WAL 记录处开始回放时，在主库上已预备但尚未提交的事务会被正确地理解为仍在进行中。但预备事务的子事务（由保存点或 PL/pgSQL 异常块创建）未被考虑，会被当作已中止的事务处理。如果预备事务随后被提交，就会导致不一致。","title":"修复启动热备服务器时预备事务的子事务处理","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["068674f4a","1b3707587","2f3304ce1","aee8c2b95","bb19b7008","cf2c69ec5","f7d3caf9d"],"commit_groups":[["068674f4a","1b3707587","2f3304ce1","aee8c2b95","bb19b7008","cf2c69ec5","f7d3caf9d"]],"commits":["2f3304ce1"],"cves":[],"db_id":"1b83b73cb3b34c621ddf372d0362d666","html":"\u003cp\u003e防止逻辑复制槽的不正确初始化（Masahiko Sawada）\u003ca href=\"https://postgr.es/c/2f3304ce1\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e在某些情况下，复制槽在 WAL 流中的起始点可能被设置为事务内部的某个位置，导致断言失败或不正确的解码结果。\u003c/p\u003e","id":"16.4-5c61539b7017d233","identity_text":"Prevent incorrect initialization of logical replication slots (Masahiko Sawada) In some cases a replication slot's start point within the WAL stream could be set to a point within a transaction, leading to assertion failures or incorrect decoding results.","part":"changes","patch_ids":["f3ca5487898826c4944a699390deb5b8"],"related_changes":[{"db_id":"577d72d84ee2053d34fdebe2a7268652","evidence":{"patch_ids":["f3ca5487898826c4944a699390deb5b8"],"same_day":true,"statement_hash":"f583445c1c110ee7e89fc67e88734921b46c4f1599c090833ba65c220e030d63"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"防止逻辑复制槽的不正确初始化","url":"/docs/compare/?release=15.8#15.8-c45871b8ab1273c8","version":"15.8"},{"db_id":"a485385219574a54e8cd60590e215b20","evidence":{"patch_ids":["f3ca5487898826c4944a699390deb5b8"],"same_day":true,"statement_hash":"f583445c1c110ee7e89fc67e88734921b46c4f1599c090833ba65c220e030d63"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"防止逻辑复制槽的不正确初始化","url":"/docs/compare/?release=14.13#14.13-79627f65d44ef772","version":"14.13"},{"db_id":"a7610af2b7076c774c0f90b7d4ec731d","evidence":{"patch_ids":["f3ca5487898826c4944a699390deb5b8"],"same_day":true,"statement_hash":"f583445c1c110ee7e89fc67e88734921b46c4f1599c090833ba65c220e030d63"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"防止逻辑复制槽的不正确初始化","url":"/docs/compare/?release=13.16#13.16-6db5ada335322286","version":"13.16"},{"db_id":"6d1402ce75d70fbfffa9e27f6e30467a","evidence":{"patch_ids":["f3ca5487898826c4944a699390deb5b8"],"same_day":true,"statement_hash":"f583445c1c110ee7e89fc67e88734921b46c4f1599c090833ba65c220e030d63"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"防止逻辑复制槽的不正确初始化","url":"/docs/compare/?release=12.20#12.20-03734ff88ecf36c8","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["f3ca5487898826c4944a699390deb5b8"],"same_day":true,"statement_hash":"f583445c1c110ee7e89fc67e88734921b46c4f1599c090833ba65c220e030d63"},"rule":2,"target":"577d72d84ee2053d34fdebe2a7268652","type":"equivalent"},{"evidence":{"patch_ids":["f3ca5487898826c4944a699390deb5b8"],"same_day":true,"statement_hash":"f583445c1c110ee7e89fc67e88734921b46c4f1599c090833ba65c220e030d63"},"rule":2,"target":"6d1402ce75d70fbfffa9e27f6e30467a","type":"equivalent"},{"evidence":{"patch_ids":["f3ca5487898826c4944a699390deb5b8"],"same_day":true,"statement_hash":"f583445c1c110ee7e89fc67e88734921b46c4f1599c090833ba65c220e030d63"},"rule":2,"target":"a485385219574a54e8cd60590e215b20","type":"equivalent"},{"evidence":{"patch_ids":["f3ca5487898826c4944a699390deb5b8"],"same_day":true,"statement_hash":"f583445c1c110ee7e89fc67e88734921b46c4f1599c090833ba65c220e030d63"},"rule":2,"target":"a7610af2b7076c774c0f90b7d4ec731d","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["2f3304ce1"],"source_entry_id":"16.4/changes/032","source_hash":"34438d80cedcf7b803d334c9a606ce3077482380eaca5afd3ef8edeb61d3a822","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"f583445c1c110ee7e89fc67e88734921b46c4f1599c090833ba65c220e030d63","text":"防止逻辑复制槽的不正确初始化（Masahiko Sawada）§ 在某些情况下，复制槽在 WAL 流中的起始点可能被设置为事务内部的某个位置，导致断言失败或不正确的解码结果。","title":"防止逻辑复制槽的不正确初始化","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["bfc44da24","cd312adc5","f2c922ff2"],"commit_groups":[["bfc44da24","cd312adc5","f2c922ff2"]],"commits":["f2c922ff2"],"cves":[],"db_id":"975d228b9a861c9bbf50c1c6042cd55e","html":"\u003cp\u003e避免在复制槽创建和删除期间出现 \u003cspan\u003e“\u003cspan\u003ecan only drop stats once\u003c/span\u003e”\u003c/span\u003e 错误（Floris Van Nee）\u003ca href=\"https://postgr.es/c/f2c922ff2\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"16.4-cf12fa7b8d77da65","identity_text":"Avoid can only drop stats once error during replication slot creation and drop (Floris Van Nee)","part":"changes","patch_ids":["7f12d67a6e813b3e8236f21abdce8c51"],"related_changes":[{"db_id":"5e0d61c7192faadfbb750283bcdf69f3","evidence":{"patch_ids":["7f12d67a6e813b3e8236f21abdce8c51"],"same_day":true,"statement_hash":"8428dafd9ce801f1db71bec4a74d0b5c7f44ac530855784c79ddc7fb6a030237"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"避免在复制槽创建和删除期间出现 “can only drop stats once” 错误","url":"/docs/compare/?release=15.8#15.8-3ead7d4159ce1c06","version":"15.8"}],"relations":[{"evidence":{"patch_ids":["7f12d67a6e813b3e8236f21abdce8c51"],"same_day":true,"statement_hash":"8428dafd9ce801f1db71bec4a74d0b5c7f44ac530855784c79ddc7fb6a030237"},"rule":2,"target":"5e0d61c7192faadfbb750283bcdf69f3","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["f2c922ff2"],"source_entry_id":"16.4/changes/033","source_hash":"878c1826e8a2578cf6d4ed4b67ca37f6711b56f28d61096531a0510e1028d16a","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"8428dafd9ce801f1db71bec4a74d0b5c7f44ac530855784c79ddc7fb6a030237","text":"避免在复制槽创建和删除期间出现 “can only drop stats once” 错误（Floris Van Nee）§","title":"避免在复制槽创建和删除期间出现 “can only drop stats once” 错误","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["3e53492aa","76fda6140","b8f953d8d"],"commit_groups":[["3e53492aa","76fda6140","b8f953d8d"]],"commits":["b8f953d8d"],"cves":[],"db_id":"52edccfa9472b6f83fde581990535cfa","html":"\u003cp\u003e修复逻辑复制 WAL 发送进程中的资源泄漏（Hou Zhijie）\u003ca href=\"https://postgr.es/c/b8f953d8d\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e当发布对分区表的更改时，如果分区的行类型与分区表的行类型物理上不同，walsender 进程会泄漏内存。\u003c/p\u003e","id":"16.4-519479a2766a1ca5","identity_text":"Fix resource leakage in logical replication WAL sender (Hou Zhijie) The walsender process leaked memory when publishing changes to a partitioned table whose partitions have row types physically different from the partitioned table's.","part":"changes","patch_ids":["174592acac0209e470a9a866b329b56d"],"related_changes":[{"db_id":"6026b8660de6faee252b95f97a67fac3","evidence":{"patch_ids":["174592acac0209e470a9a866b329b56d"],"same_day":true,"statement_hash":"c6fc100c66929a244a4f4e2c73ea9f8abc82830f3a4395dac3647b497f94824a"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复逻辑复制 WAL 发送进程中的资源泄漏","url":"/docs/compare/?release=15.8#15.8-519479a2766a1ca5","version":"15.8"}],"relations":[{"evidence":{"patch_ids":["174592acac0209e470a9a866b329b56d"],"same_day":true,"statement_hash":"c6fc100c66929a244a4f4e2c73ea9f8abc82830f3a4395dac3647b497f94824a"},"rule":2,"target":"6026b8660de6faee252b95f97a67fac3","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["b8f953d8d"],"source_entry_id":"16.4/changes/034","source_hash":"eac23a7379be90a476596b5eada6f71fdfe6c05120f82f10beb12523e5b25fa8","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"c6fc100c66929a244a4f4e2c73ea9f8abc82830f3a4395dac3647b497f94824a","text":"修复逻辑复制 WAL 发送进程中的资源泄漏（Hou Zhijie）§ 当发布对分区表的更改时，如果分区的行类型与分区表的行类型物理上不同，walsender 进程会泄漏内存。","title":"修复逻辑复制 WAL 发送进程中的资源泄漏","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["1608902fc","31f8d620b","4df767cf9","54a7b21b3","5f86cd70d","8565fb6fb"],"commit_groups":[["1608902fc","31f8d620b","4df767cf9","54a7b21b3","5f86cd70d","8565fb6fb"]],"commits":["54a7b21b3"],"cves":[],"db_id":"0d82cb37c9a335dee35c3994766f2182","html":"\u003cp\u003e避免在处理通知或共享失效中断后的内存泄漏（Tom Lane）\u003ca href=\"https://postgr.es/c/54a7b21b3\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这些事件的处理函数可能将当前内存上下文切换到 TopMemoryContext，导致在错误设置被替换之前分配的任何数据出现会话级别的泄漏。至少在传入查询的编码转换和附加到 Bind 消息的参数方面存在可观察到的泄漏。\u003c/p\u003e","id":"16.4-ed1321b1f9f5d847","identity_text":"Avoid memory leakage after servicing a notify or sinval interrupt (Tom Lane) The processing functions for these events could switch the current memory context to TopMemoryContext, resulting in session-lifespan leakage of any data allocated before the incorrect setting gets replaced. There were observable leaks associated with (at least) encoding conversion of incoming queries and parameters attached to Bind messages.","part":"changes","patch_ids":["e4b4c6857b69435f7041aa9717bc32ec"],"related_changes":[{"db_id":"6da29c6f62742014a2e29d1835a92337","evidence":{"patch_ids":["e4b4c6857b69435f7041aa9717bc32ec"],"same_day":true,"statement_hash":"246286e429b9f02767e1bf510975230828149e3a9b45b4541c80efbf7402be71"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"避免在处理通知或共享失效中断后的内存泄漏","url":"/docs/compare/?release=15.8#15.8-ed1321b1f9f5d847","version":"15.8"},{"db_id":"b3d22673cb20177c186729255869c9ea","evidence":{"patch_ids":["e4b4c6857b69435f7041aa9717bc32ec"],"same_day":true,"statement_hash":"246286e429b9f02767e1bf510975230828149e3a9b45b4541c80efbf7402be71"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"避免在处理通知或共享失效中断后的内存泄漏","url":"/docs/compare/?release=14.13#14.13-ed1321b1f9f5d847","version":"14.13"},{"db_id":"f8a6d2763491f62e2962b747215a53f7","evidence":{"patch_ids":["e4b4c6857b69435f7041aa9717bc32ec"],"same_day":true,"statement_hash":"246286e429b9f02767e1bf510975230828149e3a9b45b4541c80efbf7402be71"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"避免在处理通知或共享失效中断后的内存泄漏","url":"/docs/compare/?release=13.16#13.16-c5b9f0e6f10164e5","version":"13.16"},{"db_id":"608955e3fac97af439211180d82e2a9c","evidence":{"patch_ids":["e4b4c6857b69435f7041aa9717bc32ec"],"same_day":true,"statement_hash":"246286e429b9f02767e1bf510975230828149e3a9b45b4541c80efbf7402be71"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"避免在处理通知或共享失效中断后的内存泄漏","url":"/docs/compare/?release=12.20#12.20-bcb2f288e96fb567","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["e4b4c6857b69435f7041aa9717bc32ec"],"same_day":true,"statement_hash":"246286e429b9f02767e1bf510975230828149e3a9b45b4541c80efbf7402be71"},"rule":2,"target":"608955e3fac97af439211180d82e2a9c","type":"equivalent"},{"evidence":{"patch_ids":["e4b4c6857b69435f7041aa9717bc32ec"],"same_day":true,"statement_hash":"246286e429b9f02767e1bf510975230828149e3a9b45b4541c80efbf7402be71"},"rule":2,"target":"6da29c6f62742014a2e29d1835a92337","type":"equivalent"},{"evidence":{"patch_ids":["e4b4c6857b69435f7041aa9717bc32ec"],"same_day":true,"statement_hash":"246286e429b9f02767e1bf510975230828149e3a9b45b4541c80efbf7402be71"},"rule":2,"target":"b3d22673cb20177c186729255869c9ea","type":"equivalent"},{"evidence":{"patch_ids":["e4b4c6857b69435f7041aa9717bc32ec"],"same_day":true,"statement_hash":"246286e429b9f02767e1bf510975230828149e3a9b45b4541c80efbf7402be71"},"rule":2,"target":"f8a6d2763491f62e2962b747215a53f7","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["54a7b21b3"],"source_entry_id":"16.4/changes/035","source_hash":"feddb24ee2dfa076208e66accfa62125f4a7dccda11f742e0644072084f6382d","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"246286e429b9f02767e1bf510975230828149e3a9b45b4541c80efbf7402be71","text":"避免在处理通知或共享失效中断后的内存泄漏（Tom Lane）§ 这些事件的处理函数可能将当前内存上下文切换到 TopMemoryContext，导致在错误设置被替换之前分配的任何数据出现会话级别的泄漏。至少在传入查询的编码转换和附加到 Bind 消息的参数方面存在可观察到的泄漏。","title":"避免在处理通知或共享失效中断后的内存泄漏","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["6f61d0e7e","7467939ea","eb144dfca"],"commit_groups":[["6f61d0e7e","7467939ea","eb144dfca"]],"commits":["6f61d0e7e"],"cves":[],"db_id":"48cdee92411cc49e438e65d03377ca6e","html":"\u003cp\u003e防止用于统计信息的共享内存块的引用计数泄漏（Anthonin Bonnefoy）\u003ca href=\"https://postgr.es/c/6f61d0e7e\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e新的后端进程在附加到统计共享内存时会增加其引用计数，但在退出时未能减少该计数。在创建 2\u003csup\u003e32\u003c/sup\u003e 个会话后，引用计数会溢出为零，导致所有后续后端进程启动失败。\u003c/p\u003e","id":"16.4-7651d5c59103c778","identity_text":"Prevent leakage of reference counts for the shared memory block used for statistics (Anthonin Bonnefoy) A new backend process attaching to the statistics shared memory incremented its reference count, but failed to decrement the count when exiting. After 232 sessions had been created, the reference count would overflow to zero, causing failures in all subsequent backend process starts.","part":"changes","patch_ids":["b79b6febfb938692c055d777e4c46871"],"related_changes":[{"db_id":"8423e2938fb99fcef1b006ce50aede09","evidence":{"patch_ids":["b79b6febfb938692c055d777e4c46871"],"same_day":true,"statement_hash":"77d92237da927a4d5cc1793712466f835a2d4f479beb6a1852a73a776c144d70"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"防止用于统计信息的共享内存块的引用计数泄漏","url":"/docs/compare/?release=15.8#15.8-7651d5c59103c778","version":"15.8"}],"relations":[{"evidence":{"patch_ids":["b79b6febfb938692c055d777e4c46871"],"same_day":true,"statement_hash":"77d92237da927a4d5cc1793712466f835a2d4f479beb6a1852a73a776c144d70"},"rule":2,"target":"8423e2938fb99fcef1b006ce50aede09","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["6f61d0e7e"],"source_entry_id":"16.4/changes/036","source_hash":"fbbf63cea1113d3e29fcb9e04d0c5e1f50b1834ba9c12040486fcc745f086cd4","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"77d92237da927a4d5cc1793712466f835a2d4f479beb6a1852a73a776c144d70","text":"防止用于统计信息的共享内存块的引用计数泄漏（Anthonin Bonnefoy）§ 新的后端进程在附加到统计共享内存时会增加其引用计数，但在退出时未能减少该计数。在创建 232 个会话后，引用计数会溢出为零，导致所有后续后端进程启动失败。","title":"防止用于统计信息的共享内存块的引用计数泄漏","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["4c8e00ae9","b1ffe3ff0","c809a2b2d","e7cbe5a85"],"commit_groups":[["4c8e00ae9","b1ffe3ff0","c809a2b2d","e7cbe5a85"]],"commits":["e7cbe5a85"],"cves":[],"db_id":"c7a02a751b0a96aaf92740d4a1c93e12","html":"\u003cp\u003e防止在截断多事务 SLRU 日志时出现死锁和断言失败（Heikki Linnakangas）\u003ca href=\"https://postgr.es/c/e7cbe5a85\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e尝试删除 SLRU 段的进程可能与检查点进程发生死锁。\u003c/p\u003e","id":"16.4-4ee92f82f43c7ff0","identity_text":"Prevent deadlocks and assertion failures during truncation of the multixact SLRU log (Heikki Linnakangas) A process trying to delete SLRU segments could deadlock with the checkpointer process.","part":"changes","patch_ids":["584dbfb3f02d0227e45d3a9e9594ed32"],"related_changes":[{"db_id":"282d739b649051dd97bb9ecee1e10290","evidence":{"patch_ids":["584dbfb3f02d0227e45d3a9e9594ed32"],"same_day":true,"statement_hash":"5705bd6fa004c0c0f497d57bb9a81504fdf85ce36f4292b6bf1a1325a7440b28"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"防止在截断多事务 SLRU 日志时出现死锁和断言失败","url":"/docs/compare/?release=15.8#15.8-4ee92f82f43c7ff0","version":"15.8"},{"db_id":"f65af754adc39c0eb08c79f3656e5cbd","evidence":{"patch_ids":["584dbfb3f02d0227e45d3a9e9594ed32"],"same_day":true,"statement_hash":"5705bd6fa004c0c0f497d57bb9a81504fdf85ce36f4292b6bf1a1325a7440b28"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"防止在截断多事务 SLRU 日志时出现死锁和断言失败","url":"/docs/compare/?release=14.13#14.13-4ee92f82f43c7ff0","version":"14.13"}],"relations":[{"evidence":{"patch_ids":["584dbfb3f02d0227e45d3a9e9594ed32"],"same_day":true,"statement_hash":"5705bd6fa004c0c0f497d57bb9a81504fdf85ce36f4292b6bf1a1325a7440b28"},"rule":2,"target":"282d739b649051dd97bb9ecee1e10290","type":"equivalent"},{"evidence":{"patch_ids":["584dbfb3f02d0227e45d3a9e9594ed32"],"same_day":true,"statement_hash":"5705bd6fa004c0c0f497d57bb9a81504fdf85ce36f4292b6bf1a1325a7440b28"},"rule":2,"target":"f65af754adc39c0eb08c79f3656e5cbd","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["e7cbe5a85"],"source_entry_id":"16.4/changes/037","source_hash":"8113d267a624a2ee9ead5e7b6d19aeeed1273759d3e8a881cff427b2cb18c5a6","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"5705bd6fa004c0c0f497d57bb9a81504fdf85ce36f4292b6bf1a1325a7440b28","text":"防止在截断多事务 SLRU 日志时出现死锁和断言失败（Heikki Linnakangas）§ 尝试删除 SLRU 段的进程可能与检查点进程发生死锁。","title":"防止在截断多事务 SLRU 日志时出现死锁和断言失败","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["3554d841d","3c1c82d40","5546a834c","894b497ac","a622095bc","a8458f508","ba9fcac72"],"commit_groups":[["3554d841d","3c1c82d40","5546a834c","894b497ac","a622095bc","a8458f508","ba9fcac72"]],"commits":["894b497ac"],"cves":[],"db_id":"17f3eefd22838bedf5d5ef66df9b1623","html":"\u003cp\u003e避免在 Windows 套接字上可能遗漏输入结束事件（Thomas Munro）\u003ca href=\"https://postgr.es/c/894b497ac\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWindows 在连接的远程端断开连接后只报告一次 FD_CLOSE 事件。在时机不巧的情况下，我们可能会遗漏该报告并无限期等待，或者至少等到超时为止，以期望获得更多输入。\u003c/p\u003e","id":"16.4-ec3cbb1503e4a76e","identity_text":"Avoid possibly missing end-of-input events on Windows sockets (Thomas Munro) Windows reports an FD_CLOSE event only once after the remote end of the connection disconnects. With unlucky timing, we could miss that report and wait indefinitely, or at least until a timeout elapsed, expecting more input.","part":"changes","patch_ids":["7aeed61fe835cd363dc1c4bd14c5c247"],"related_changes":[{"db_id":"1631ed6f9c1e941ab12ffb28bee4372c","evidence":{"patch_ids":["7aeed61fe835cd363dc1c4bd14c5c247"],"same_day":true,"statement_hash":"90d25bbc5a5ea45ff4902ba054df6e236b0841319a0301a67217e6fa05628bdc"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"避免在 Windows 套接字上可能遗漏输入结束事件","url":"/docs/compare/?release=15.8#15.8-17a0e388359911d9","version":"15.8"},{"db_id":"c978c16fdf2c365a1726b07afe1617f4","evidence":{"patch_ids":["7aeed61fe835cd363dc1c4bd14c5c247"],"same_day":true,"statement_hash":"90d25bbc5a5ea45ff4902ba054df6e236b0841319a0301a67217e6fa05628bdc"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"避免在 Windows 套接字上可能遗漏输入结束事件","url":"/docs/compare/?release=14.13#14.13-ec3cbb1503e4a76e","version":"14.13"},{"db_id":"6ea031a6085a757f0a918a983b8f18f2","evidence":{"patch_ids":["7aeed61fe835cd363dc1c4bd14c5c247"],"same_day":true,"statement_hash":"90d25bbc5a5ea45ff4902ba054df6e236b0841319a0301a67217e6fa05628bdc"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"避免在 Windows 套接字上可能遗漏输入结束事件","url":"/docs/compare/?release=13.16#13.16-3b05d07fa0ce2e38","version":"13.16"},{"db_id":"2bbe9ff4d5498518bac0b7f203b15a2c","evidence":{"patch_ids":["7aeed61fe835cd363dc1c4bd14c5c247"],"same_day":true,"statement_hash":"90d25bbc5a5ea45ff4902ba054df6e236b0841319a0301a67217e6fa05628bdc"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"避免在 Windows 套接字上可能遗漏输入结束事件","url":"/docs/compare/?release=12.20#12.20-0a1cc36995561f35","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["7aeed61fe835cd363dc1c4bd14c5c247"],"same_day":true,"statement_hash":"90d25bbc5a5ea45ff4902ba054df6e236b0841319a0301a67217e6fa05628bdc"},"rule":2,"target":"1631ed6f9c1e941ab12ffb28bee4372c","type":"equivalent"},{"evidence":{"patch_ids":["7aeed61fe835cd363dc1c4bd14c5c247"],"same_day":true,"statement_hash":"90d25bbc5a5ea45ff4902ba054df6e236b0841319a0301a67217e6fa05628bdc"},"rule":2,"target":"2bbe9ff4d5498518bac0b7f203b15a2c","type":"equivalent"},{"evidence":{"patch_ids":["7aeed61fe835cd363dc1c4bd14c5c247"],"same_day":true,"statement_hash":"90d25bbc5a5ea45ff4902ba054df6e236b0841319a0301a67217e6fa05628bdc"},"rule":2,"target":"6ea031a6085a757f0a918a983b8f18f2","type":"equivalent"},{"evidence":{"patch_ids":["7aeed61fe835cd363dc1c4bd14c5c247"],"same_day":true,"statement_hash":"90d25bbc5a5ea45ff4902ba054df6e236b0841319a0301a67217e6fa05628bdc"},"rule":2,"target":"c978c16fdf2c365a1726b07afe1617f4","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["a622095bc"],"source_entry_id":"16.4/changes/038","source_hash":"dd729d70693b18b31ddffbc23abc99252304815d52d668cf589a757891fa95c7","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"90d25bbc5a5ea45ff4902ba054df6e236b0841319a0301a67217e6fa05628bdc","text":"避免在 Windows 套接字上可能遗漏输入结束事件（Thomas Munro）§ Windows 在连接的远程端断开连接后只报告一次 FD_CLOSE 事件。在时机不巧的情况下，我们可能会遗漏该报告并无限期等待，或者至少等到超时为止，以期望获得更多输入。","title":"避免在 Windows 套接字上可能遗漏输入结束事件","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["377c25d32","41adf9d96","5396a2987","855517307","8c3f30e67"],"commit_groups":[["377c25d32","41adf9d96","5396a2987","855517307","8c3f30e67"]],"commits":["5396a2987"],"cves":[],"db_id":"baf9c178c2a73906f3f9ae61c06e9ac5","html":"\u003cp\u003e修复 JSON 解析错误报告中针对不完整字节序列的缓冲区越界读取（Jacob Champion）\u003ca href=\"https://postgr.es/c/5396a2987\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e当最后的字节构成不完整的多字节字符时，可能会在输入缓冲区末尾越界读取几个字节。虽然通常无害，但原则上这可能导致崩溃。\u003c/p\u003e","id":"16.4-252a69852fa2e4f7","identity_text":"Fix buffer overread in JSON parse error reports for incomplete byte sequences (Jacob Champion) It was possible to walk off the end of the input buffer by a few bytes when the last bytes comprise an incomplete multi-byte character. While usually harmless, in principle this could cause a crash.","part":"changes","patch_ids":["a7244d7fc4b5d6f2a1c109b8a35b7fea"],"related_changes":[{"db_id":"23854c849e1d777b51e2f6dae926b846","evidence":{"patch_ids":["a7244d7fc4b5d6f2a1c109b8a35b7fea"],"same_day":true,"statement_hash":"fd4d0c5daa06ce9e80c94184b0e66acd500184a9c5f1db4a0fd6784d53f886e0"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复 JSON 解析错误报告中针对不完整字节序列的缓冲区越界读取","url":"/docs/compare/?release=15.8#15.8-252a69852fa2e4f7","version":"15.8"},{"db_id":"cc92c8dd978f1ed057eec472075c0818","evidence":{"patch_ids":["a7244d7fc4b5d6f2a1c109b8a35b7fea"],"same_day":true,"statement_hash":"fd4d0c5daa06ce9e80c94184b0e66acd500184a9c5f1db4a0fd6784d53f886e0"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"修复 JSON 解析错误报告中针对不完整字节序列的缓冲区越界读取","url":"/docs/compare/?release=14.13#14.13-252a69852fa2e4f7","version":"14.13"},{"db_id":"fc6e1671ca7917b75dd761a0d1500447","evidence":{"patch_ids":["a7244d7fc4b5d6f2a1c109b8a35b7fea"],"same_day":true,"statement_hash":"fd4d0c5daa06ce9e80c94184b0e66acd500184a9c5f1db4a0fd6784d53f886e0"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"修复 JSON 解析错误报告中对不完整字节序列的缓冲区越界读取","url":"/docs/compare/?release=13.16#13.16-4f6d40ffabeb6c24","version":"13.16"}],"relations":[{"evidence":{"patch_ids":["a7244d7fc4b5d6f2a1c109b8a35b7fea"],"same_day":true,"statement_hash":"fd4d0c5daa06ce9e80c94184b0e66acd500184a9c5f1db4a0fd6784d53f886e0"},"rule":2,"target":"23854c849e1d777b51e2f6dae926b846","type":"equivalent"},{"evidence":{"patch_ids":["a7244d7fc4b5d6f2a1c109b8a35b7fea"],"same_day":true,"statement_hash":"fd4d0c5daa06ce9e80c94184b0e66acd500184a9c5f1db4a0fd6784d53f886e0"},"rule":2,"target":"cc92c8dd978f1ed057eec472075c0818","type":"equivalent"},{"evidence":{"patch_ids":["a7244d7fc4b5d6f2a1c109b8a35b7fea"],"same_day":true,"statement_hash":"fd4d0c5daa06ce9e80c94184b0e66acd500184a9c5f1db4a0fd6784d53f886e0"},"rule":2,"target":"fc6e1671ca7917b75dd761a0d1500447","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["5396a2987"],"source_entry_id":"16.4/changes/039","source_hash":"fff389125d63dde39e16a920b18f87601f797aff93a4d5552de5ecb8b3c40c12","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"fd4d0c5daa06ce9e80c94184b0e66acd500184a9c5f1db4a0fd6784d53f886e0","text":"修复 JSON 解析错误报告中针对不完整字节序列的缓冲区越界读取（Jacob Champion）§ 当最后的字节构成不完整的多字节字符时，可能会在输入缓冲区末尾越界读取几个字节。虽然通常无害，但原则上这可能导致崩溃。","title":"修复 JSON 解析错误报告中针对不完整字节序列的缓冲区越界读取","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["118ec331b","1272cfb72","161c73462","1f476bc75","274bbced8","32121c077","3df7f44a8","40e8ea949","441eba34d","51c1b4fd1","634710dfb","83b4a6358","970cd5c62","ac77add23","cc606afce","ce3045e9b","ddd66a629","e6dd0b863","ecbb1cd9b"],"commit_groups":[["118ec331b","1f476bc75","274bbced8","32121c077","3df7f44a8","cc606afce","ecbb1cd9b"],["1272cfb72","161c73462","40e8ea949","51c1b4fd1","83b4a6358","970cd5c62","ac77add23"],["441eba34d","634710dfb","ce3045e9b","ddd66a629","e6dd0b863"]],"commits":["441eba34d","83b4a6358","cc606afce"],"cves":[],"db_id":"78d53f7d1b802fb85289b82f39e03821","html":"\u003cp\u003e禁用 OpenSSL 创建有状态 TLS 会话票证（Daniel Gustafsson）\u003ca href=\"https://postgr.es/c/cc606afce\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/83b4a6358\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/441eba34d\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这可以避免客户端在收到会话票证后认为支持 TLS 会话恢复时可能出现的失败。\u003c/p\u003e","id":"16.4-fe85acc49637b05e","identity_text":"Disable creation of stateful TLS session tickets by OpenSSL (Daniel Gustafsson) This avoids possible failures with clients that think receipt of a session ticket means that TLS session resumption is supported.","part":"changes","patch_ids":["1fee5702bfe4aed8b6eaccd06d985141","8a5aeb1a85aed65823f76d18f63669df","d59cdf2fd7aa799d5b080bd087388acd"],"related_changes":[{"db_id":"e636de8c8d8acaa78228011fc6c79b89","evidence":{"patch_ids":["1fee5702bfe4aed8b6eaccd06d985141","8a5aeb1a85aed65823f76d18f63669df","d59cdf2fd7aa799d5b080bd087388acd"],"same_day":true,"statement_hash":"6eb0f228fc4188de980b5c10a810a580b9aa8703efc7b559672965dc17b4349e"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"禁用 OpenSSL 创建有状态 TLS 会话票证","url":"/docs/compare/?release=15.8#15.8-016fbab259cebf18","version":"15.8"},{"db_id":"e7b94d5630ba3142acc49921b812f60c","evidence":{"patch_ids":["1fee5702bfe4aed8b6eaccd06d985141","8a5aeb1a85aed65823f76d18f63669df","d59cdf2fd7aa799d5b080bd087388acd"],"same_day":true,"statement_hash":"6eb0f228fc4188de980b5c10a810a580b9aa8703efc7b559672965dc17b4349e"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"禁用 OpenSSL 创建有状态 TLS 会话票证","url":"/docs/compare/?release=14.13#14.13-b6064f46843afdea","version":"14.13"},{"db_id":"ed9bd1366a78186d49bfeacb065309c8","evidence":{"patch_ids":["1fee5702bfe4aed8b6eaccd06d985141","8a5aeb1a85aed65823f76d18f63669df","d59cdf2fd7aa799d5b080bd087388acd"],"same_day":true,"statement_hash":"6eb0f228fc4188de980b5c10a810a580b9aa8703efc7b559672965dc17b4349e"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"禁用 OpenSSL 创建有状态 TLS 会话票证","url":"/docs/compare/?release=13.16#13.16-b8bee8a57fe93f1a","version":"13.16"},{"db_id":"289993beea6a36a80de8e58b0c66ff65","evidence":{"patch_ids":["1fee5702bfe4aed8b6eaccd06d985141","8a5aeb1a85aed65823f76d18f63669df","d59cdf2fd7aa799d5b080bd087388acd"],"same_day":true,"statement_hash":"6eb0f228fc4188de980b5c10a810a580b9aa8703efc7b559672965dc17b4349e"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"禁用 OpenSSL 创建有状态 TLS 会话票证","url":"/docs/compare/?release=12.20#12.20-c3bb502dd7c1cb3b","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["1fee5702bfe4aed8b6eaccd06d985141","8a5aeb1a85aed65823f76d18f63669df","d59cdf2fd7aa799d5b080bd087388acd"],"same_day":true,"statement_hash":"6eb0f228fc4188de980b5c10a810a580b9aa8703efc7b559672965dc17b4349e"},"rule":2,"target":"289993beea6a36a80de8e58b0c66ff65","type":"equivalent"},{"evidence":{"patch_ids":["1fee5702bfe4aed8b6eaccd06d985141","8a5aeb1a85aed65823f76d18f63669df","d59cdf2fd7aa799d5b080bd087388acd"],"same_day":true,"statement_hash":"6eb0f228fc4188de980b5c10a810a580b9aa8703efc7b559672965dc17b4349e"},"rule":2,"target":"e636de8c8d8acaa78228011fc6c79b89","type":"equivalent"},{"evidence":{"patch_ids":["1fee5702bfe4aed8b6eaccd06d985141","8a5aeb1a85aed65823f76d18f63669df","d59cdf2fd7aa799d5b080bd087388acd"],"same_day":true,"statement_hash":"6eb0f228fc4188de980b5c10a810a580b9aa8703efc7b559672965dc17b4349e"},"rule":2,"target":"e7b94d5630ba3142acc49921b812f60c","type":"equivalent"},{"evidence":{"patch_ids":["1fee5702bfe4aed8b6eaccd06d985141","8a5aeb1a85aed65823f76d18f63669df","d59cdf2fd7aa799d5b080bd087388acd"],"same_day":true,"statement_hash":"6eb0f228fc4188de980b5c10a810a580b9aa8703efc7b559672965dc17b4349e"},"rule":2,"target":"ed9bd1366a78186d49bfeacb065309c8","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["441eba34d","83b4a6358","cc606afce"],"source_entry_id":"16.4/changes/040","source_hash":"f70afac8881c2ae5b266d5543e8f9f578a07a833cec80c8ffa2a4fd5aaaa792f","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"6eb0f228fc4188de980b5c10a810a580b9aa8703efc7b559672965dc17b4349e","text":"禁用 OpenSSL 创建有状态 TLS 会话票证（Daniel Gustafsson）§ § § 这可以避免客户端在收到会话票证后认为支持 TLS 会话恢复时可能出现的失败。","title":"禁用 OpenSSL 创建有状态 TLS 会话票证","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["1450db793","1fa46dba5","6dfac2440","82a931d3d","bf552b1b2","ec210914c"],"commit_groups":[["1450db793","1fa46dba5","6dfac2440","82a931d3d","bf552b1b2","ec210914c"]],"commits":["82a931d3d"],"cves":[],"db_id":"45077f7207c2949591d55adc289e648e","html":"\u003cp\u003e在重新规划 \u003cspan\u003ePL/pgSQL\u003c/span\u003e \u003cspan\u003e“\u003cspan\u003e简单表达式\u003c/span\u003e”\u003c/span\u003e时，检查其是否仍然是简单的（Tom Lane）\u003ca href=\"https://postgr.es/c/82a931d3d\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e某些相当人工的情况，如删除一个被引用的函数并将其重新创建为聚合函数，可能导致诸如 \u003cspan\u003e“\u003cspan\u003eunexpected plan node type\u003c/span\u003e”\u003c/span\u003e 之类的意外失败。\u003c/p\u003e","id":"16.4-2258d3d478905208","identity_text":"When replanning a PL/pgSQL simple expression, check it's still simple (Tom Lane) Certain fairly-artificial cases, such as dropping a referenced function and recreating it as an aggregate, could lead to surprising failures such as unexpected plan node type.","part":"changes","patch_ids":["2b2a88b3accaf9ef1f7e0c5aaebba9e5"],"related_changes":[{"db_id":"127500e1083bce6f4d97d7eef49a742e","evidence":{"patch_ids":["2b2a88b3accaf9ef1f7e0c5aaebba9e5"],"same_day":true,"statement_hash":"5b3fe3920981346dd07ccf30e2c885173ddd07c186ec43a15450724ece7a5b40"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"在重新规划 PL/pgSQL “简单表达式”时，检查其是否仍然是简单的","url":"/docs/compare/?release=15.8#15.8-2258d3d478905208","version":"15.8"},{"db_id":"56555c6e717af3afa6caa44114656f30","evidence":{"patch_ids":["2b2a88b3accaf9ef1f7e0c5aaebba9e5"],"same_day":true,"statement_hash":"5b3fe3920981346dd07ccf30e2c885173ddd07c186ec43a15450724ece7a5b40"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"在重新规划 PL/pgSQL “简单表达式”时，检查其是否仍然是简单的","url":"/docs/compare/?release=14.13#14.13-2258d3d478905208","version":"14.13"},{"db_id":"e258e8d66ef84a134ed33d077971516e","evidence":{"patch_ids":["2b2a88b3accaf9ef1f7e0c5aaebba9e5"],"same_day":true,"statement_hash":"5b3fe3920981346dd07ccf30e2c885173ddd07c186ec43a15450724ece7a5b40"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"当重新规划 PL/pgSQL 的“简单表达式”时，检查它是否仍然是简单的","url":"/docs/compare/?release=13.16#13.16-c74a11be13a3e1e9","version":"13.16"},{"db_id":"24a3b4bda5662edaa1f1f7dfcec501e0","evidence":{"patch_ids":["2b2a88b3accaf9ef1f7e0c5aaebba9e5"],"same_day":true,"statement_hash":"5b3fe3920981346dd07ccf30e2c885173ddd07c186ec43a15450724ece7a5b40"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"当重新规划 PL/pgSQL 的“简单表达式”时，检查它是否仍然是简单的","url":"/docs/compare/?release=12.20#12.20-d1615198c551197b","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["2b2a88b3accaf9ef1f7e0c5aaebba9e5"],"same_day":true,"statement_hash":"5b3fe3920981346dd07ccf30e2c885173ddd07c186ec43a15450724ece7a5b40"},"rule":2,"target":"127500e1083bce6f4d97d7eef49a742e","type":"equivalent"},{"evidence":{"patch_ids":["2b2a88b3accaf9ef1f7e0c5aaebba9e5"],"same_day":true,"statement_hash":"5b3fe3920981346dd07ccf30e2c885173ddd07c186ec43a15450724ece7a5b40"},"rule":2,"target":"24a3b4bda5662edaa1f1f7dfcec501e0","type":"equivalent"},{"evidence":{"patch_ids":["2b2a88b3accaf9ef1f7e0c5aaebba9e5"],"same_day":true,"statement_hash":"5b3fe3920981346dd07ccf30e2c885173ddd07c186ec43a15450724ece7a5b40"},"rule":2,"target":"56555c6e717af3afa6caa44114656f30","type":"equivalent"},{"evidence":{"patch_ids":["2b2a88b3accaf9ef1f7e0c5aaebba9e5"],"same_day":true,"statement_hash":"5b3fe3920981346dd07ccf30e2c885173ddd07c186ec43a15450724ece7a5b40"},"rule":2,"target":"e258e8d66ef84a134ed33d077971516e","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["82a931d3d"],"source_entry_id":"16.4/changes/041","source_hash":"b1f9730f0ebf77a691743b0d82c04e6edddb24c8c24aad90f52ed06b92196630","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"5b3fe3920981346dd07ccf30e2c885173ddd07c186ec43a15450724ece7a5b40","text":"在重新规划 PL/pgSQL “简单表达式”时，检查其是否仍然是简单的（Tom Lane）§ 某些相当人工的情况，如删除一个被引用的函数并将其重新创建为聚合函数，可能导致诸如 “unexpected plan node type” 之类的意外失败。","title":"在重新规划 PL/pgSQL “简单表达式”时，检查其是否仍然是简单的","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["b4e909082","cd2624fd9"],"commit_groups":[["b4e909082","cd2624fd9"]],"commits":["b4e909082"],"cves":[],"db_id":"d9b57829ed0e760be7db0ac3a52ae864","html":"\u003cp\u003e修复 \u003cspan\u003ePL/pgSQL\u003c/span\u003e 对包含下划线的整数范围的处理（Erik Wienhold）\u003ca href=\"https://postgr.es/c/b4e909082\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e从 v16 开始我们允许整数字面量包含下划线，但 \u003cspan\u003ePL/pgSQL\u003c/span\u003e 未能处理诸如 \u003ccode\u003eFOR i IN 1_001..1_003\u003c/code\u003e 之类的示例。\u003c/p\u003e","id":"16.4-4a32077b3e2d0570","identity_text":"Fix PL/pgSQL's handling of integer ranges containing underscores (Erik Wienhold) As of v16 we allow integer literals to contain underscores, but PL/pgSQL failed to handle examples such as FOR i IN 1_001..1_003.","part":"changes","patch_ids":["ef55726661f99fa4b171724b30a6ac29"],"related_changes":[],"relations":[],"section":"变更","section_path":["变更"],"source_commits":["b4e909082"],"source_entry_id":"16.4/changes/042","source_hash":"7ff99efefaf9867d0fd4f05bae746526acbd6e5226a0f9dde8b61b32a4408032","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"f6e408930a7a6ba2b06b369beff98ac8d7be64f47783765479a64318af806a08","text":"修复 PL/pgSQL 对包含下划线的整数范围的处理（Erik Wienhold）§ 从 v16 开始我们允许整数字面量包含下划线，但 PL/pgSQL 未能处理诸如 FOR i IN 1_001..1_003 之类的示例。","title":"修复 PL/pgSQL 对包含下划线的整数范围的处理","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["157b1e6b4","272867792","52ea653aa","6e29963ed","d39337021","d727c5431"],"commit_groups":[["157b1e6b4","272867792","52ea653aa","6e29963ed","d39337021","d727c5431"]],"commits":["52ea653aa"],"cves":[],"db_id":"20b19a024ab3cee29466177488f0c8ec","html":"\u003cp\u003e修复返回 \u003ccode\u003eRECORD\u003c/code\u003e 类型的递归 \u003cspan\u003ePL/Python\u003c/span\u003e 函数（Tom Lane）\u003ca href=\"https://postgr.es/c/52ea653aa\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e如果递归到同一函数的新调用并传递了不同的列定义列表（\u003ccode\u003eAS\u003c/code\u003e 子句），将会失败，因为内部调用会覆盖外部调用所期望的返回行类型。\u003c/p\u003e","id":"16.4-37c152b2a6e8068e","identity_text":"Fix recursive RECORD-returning PL/Python functions (Tom Lane) If we recurse to a new call of the same function that passes a different column definition list (AS clause), it would fail because the inner call would overwrite the outer call's idea of what rowtype to return.","part":"changes","patch_ids":["7947e30d798e59659f6e76204af65a32"],"related_changes":[{"db_id":"6a9c99a143bef47df45f9e3c803f361b","evidence":{"patch_ids":["7947e30d798e59659f6e76204af65a32"],"same_day":true,"statement_hash":"d308bee676993d12669f2e9bf27b8bc434ac917954b15e76eaf5a5cbc0624d6a"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复返回 RECORD 类型的递归 PL/Python 函数","url":"/docs/compare/?release=15.8#15.8-37c152b2a6e8068e","version":"15.8"},{"db_id":"60010522b3542aa6b59c72353574d5cc","evidence":{"patch_ids":["7947e30d798e59659f6e76204af65a32"],"same_day":true,"statement_hash":"d308bee676993d12669f2e9bf27b8bc434ac917954b15e76eaf5a5cbc0624d6a"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"修复返回 RECORD 类型的递归 PL/Python 函数","url":"/docs/compare/?release=14.13#14.13-37c152b2a6e8068e","version":"14.13"},{"db_id":"9c75f3e803cd1ebfaf256e5bdce5a7d2","evidence":{"patch_ids":["7947e30d798e59659f6e76204af65a32"],"same_day":true,"statement_hash":"d308bee676993d12669f2e9bf27b8bc434ac917954b15e76eaf5a5cbc0624d6a"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"修复递归返回 RECORD 类型的 PL/Python 函数","url":"/docs/compare/?release=13.16#13.16-7b98d3b2d985af86","version":"13.16"},{"db_id":"ed8339e2ae4f004ad6676f89b5586940","evidence":{"patch_ids":["7947e30d798e59659f6e76204af65a32"],"same_day":true,"statement_hash":"d308bee676993d12669f2e9bf27b8bc434ac917954b15e76eaf5a5cbc0624d6a"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"修复递归返回 RECORD 类型的 PL/Python 函数","url":"/docs/compare/?release=12.20#12.20-1ebab025873a68ed","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["7947e30d798e59659f6e76204af65a32"],"same_day":true,"statement_hash":"d308bee676993d12669f2e9bf27b8bc434ac917954b15e76eaf5a5cbc0624d6a"},"rule":2,"target":"60010522b3542aa6b59c72353574d5cc","type":"equivalent"},{"evidence":{"patch_ids":["7947e30d798e59659f6e76204af65a32"],"same_day":true,"statement_hash":"d308bee676993d12669f2e9bf27b8bc434ac917954b15e76eaf5a5cbc0624d6a"},"rule":2,"target":"6a9c99a143bef47df45f9e3c803f361b","type":"equivalent"},{"evidence":{"patch_ids":["7947e30d798e59659f6e76204af65a32"],"same_day":true,"statement_hash":"d308bee676993d12669f2e9bf27b8bc434ac917954b15e76eaf5a5cbc0624d6a"},"rule":2,"target":"9c75f3e803cd1ebfaf256e5bdce5a7d2","type":"equivalent"},{"evidence":{"patch_ids":["7947e30d798e59659f6e76204af65a32"],"same_day":true,"statement_hash":"d308bee676993d12669f2e9bf27b8bc434ac917954b15e76eaf5a5cbc0624d6a"},"rule":2,"target":"ed8339e2ae4f004ad6676f89b5586940","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["52ea653aa"],"source_entry_id":"16.4/changes/043","source_hash":"727ee440b5de1152995601e7d70fe9eb6ca33ef06f991c4300730f33e696cd03","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"d308bee676993d12669f2e9bf27b8bc434ac917954b15e76eaf5a5cbc0624d6a","text":"修复返回 RECORD 类型的递归 PL/Python 函数（Tom Lane）§ 如果递归到同一函数的新调用并传递了不同的列定义列表（AS 子句），将会失败，因为内部调用会覆盖外部调用所期望的返回行类型。","title":"修复返回 RECORD 类型的递归 PL/Python 函数","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["363e8c2f9","4488142a4","90d39929a","abe60b6a0","be18a12b6","c5bec5426"],"commit_groups":[["363e8c2f9","4488142a4","90d39929a","abe60b6a0","be18a12b6","c5bec5426"]],"commits":["be18a12b6"],"cves":[],"db_id":"d4089df436fad1c56f5bad3f9a851b82","html":"\u003cp\u003e防止在递归触发器调用期间损坏 \u003cspan\u003ePL/Python\u003c/span\u003e 的 \u003ccode\u003eTD\u003c/code\u003e 字典（Tom Lane）\u003ca href=\"https://postgr.es/c/be18a12b6\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e如果一个 \u003cspan\u003ePL/Python\u003c/span\u003e 语言的触发器导致另一个触发器被调用，为内部触发器创建的 \u003ccode\u003eTD\u003c/code\u003e 字典会覆盖外部触发器的 \u003ccode\u003eTD\u003c/code\u003e 字典。\u003c/p\u003e","id":"16.4-0723d1dbaccd70f3","identity_text":"Don't corrupt PL/Python's TD dictionary during a recursive trigger call (Tom Lane) If a PL/Python-language trigger caused another one to be invoked, the TD dictionary created for the inner one would overwrite the outer one's TD dictionary.","part":"changes","patch_ids":["f03f2dde1dca0670bc1599dcbe317c61"],"related_changes":[{"db_id":"06cd9e5e2436499a0cb491a8624d7f03","evidence":{"patch_ids":["f03f2dde1dca0670bc1599dcbe317c61"],"same_day":true,"statement_hash":"77a26ba814b408ca0d56a469ac251cd2882d2416c0b187eee6237a2e2cee6d2e"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"防止在递归触发器调用期间损坏 PL/Python 的 TD 字典","url":"/docs/compare/?release=15.8#15.8-0723d1dbaccd70f3","version":"15.8"},{"db_id":"e9a7d849af36bb7a26f1632e487d1c41","evidence":{"patch_ids":["f03f2dde1dca0670bc1599dcbe317c61"],"same_day":true,"statement_hash":"77a26ba814b408ca0d56a469ac251cd2882d2416c0b187eee6237a2e2cee6d2e"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"防止在递归触发器调用期间损坏 PL/Python 的 TD 字典","url":"/docs/compare/?release=14.13#14.13-0723d1dbaccd70f3","version":"14.13"},{"db_id":"382af4882b9049066ef592c7ed64ea5d","evidence":{"patch_ids":["f03f2dde1dca0670bc1599dcbe317c61"],"same_day":true,"statement_hash":"77a26ba814b408ca0d56a469ac251cd2882d2416c0b187eee6237a2e2cee6d2e"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"在递归触发器调用时不再损坏 PL/Python 的 TD 字典","url":"/docs/compare/?release=13.16#13.16-7fbe397bbc1d28b8","version":"13.16"},{"db_id":"ea62821b94c1115cb6f53375a6d21b32","evidence":{"patch_ids":["f03f2dde1dca0670bc1599dcbe317c61"],"same_day":true,"statement_hash":"77a26ba814b408ca0d56a469ac251cd2882d2416c0b187eee6237a2e2cee6d2e"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"在递归触发器调用时不再损坏 PL/Python 的 TD 字典","url":"/docs/compare/?release=12.20#12.20-190f8da8963221d5","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["f03f2dde1dca0670bc1599dcbe317c61"],"same_day":true,"statement_hash":"77a26ba814b408ca0d56a469ac251cd2882d2416c0b187eee6237a2e2cee6d2e"},"rule":2,"target":"06cd9e5e2436499a0cb491a8624d7f03","type":"equivalent"},{"evidence":{"patch_ids":["f03f2dde1dca0670bc1599dcbe317c61"],"same_day":true,"statement_hash":"77a26ba814b408ca0d56a469ac251cd2882d2416c0b187eee6237a2e2cee6d2e"},"rule":2,"target":"382af4882b9049066ef592c7ed64ea5d","type":"equivalent"},{"evidence":{"patch_ids":["f03f2dde1dca0670bc1599dcbe317c61"],"same_day":true,"statement_hash":"77a26ba814b408ca0d56a469ac251cd2882d2416c0b187eee6237a2e2cee6d2e"},"rule":2,"target":"e9a7d849af36bb7a26f1632e487d1c41","type":"equivalent"},{"evidence":{"patch_ids":["f03f2dde1dca0670bc1599dcbe317c61"],"same_day":true,"statement_hash":"77a26ba814b408ca0d56a469ac251cd2882d2416c0b187eee6237a2e2cee6d2e"},"rule":2,"target":"ea62821b94c1115cb6f53375a6d21b32","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["be18a12b6"],"source_entry_id":"16.4/changes/044","source_hash":"9fd788d9d9d0002601818df5e0b714fc80be3f217e9bab1f011ff2c844e9804a","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"77a26ba814b408ca0d56a469ac251cd2882d2416c0b187eee6237a2e2cee6d2e","text":"防止在递归触发器调用期间损坏 PL/Python 的 TD 字典（Tom Lane）§ 如果一个 PL/Python 语言的触发器导致另一个触发器被调用，为内部触发器创建的 TD 字典会覆盖外部触发器的 TD 字典。","title":"防止在递归触发器调用期间损坏 PL/Python 的 TD 字典","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["1488dee08","30487423c","89ef2aeda","b631d0149","c236ecc82","dda633a03"],"commit_groups":[["1488dee08","30487423c","89ef2aeda","b631d0149","c236ecc82","dda633a03"]],"commits":["c236ecc82"],"cves":[],"db_id":"527170027e210471e71d83b895dbdce8","html":"\u003cp\u003e修复 \u003cspan\u003ePL/Tcl\u003c/span\u003e 在返回元组的函数结果中存在无效列表语法时的报告（Erik Wienhold，Tom Lane）\u003ca href=\"https://postgr.es/c/c236ecc82\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这种情况可能导致崩溃，或发出实际上引用的是之前 Tcl 错误的误导性上下文信息。\u003c/p\u003e","id":"16.4-8771278eb7926ca7","identity_text":"Fix PL/Tcl's reporting of invalid list syntax in the result of a function returning tuple (Erik Wienhold, Tom Lane) Such a case could result in a crash, or in emission of misleading context information that actually refers to the previous Tcl error.","part":"changes","patch_ids":["3eaed2b1263d4410cb744af32c710f13"],"related_changes":[{"db_id":"5550401bdb6f623616415bcada604ebd","evidence":{"patch_ids":["3eaed2b1263d4410cb744af32c710f13"],"same_day":true,"statement_hash":"7bc0765525feeacfd02af43b9138934794c6b06757eca285a686c8d2901b1ca8"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复 PL/Tcl 在返回元组的函数结果中存在无效列表语法时的报告","url":"/docs/compare/?release=15.8#15.8-8771278eb7926ca7","version":"15.8"},{"db_id":"48a40977310db944b18878fd1d9ee0c0","evidence":{"patch_ids":["3eaed2b1263d4410cb744af32c710f13"],"same_day":true,"statement_hash":"7bc0765525feeacfd02af43b9138934794c6b06757eca285a686c8d2901b1ca8"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"修复 PL/Tcl 在返回元组的函数结果中存在无效列表语法时的报告","url":"/docs/compare/?release=14.13#14.13-8771278eb7926ca7","version":"14.13"},{"db_id":"cc423f04849acf7f0abdd53b43754337","evidence":{"patch_ids":["3eaed2b1263d4410cb744af32c710f13"],"same_day":true,"statement_hash":"7bc0765525feeacfd02af43b9138934794c6b06757eca285a686c8d2901b1ca8"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"修复 PL/Tcl 在返回元组的函数结果中报告无效列表语法时的问题","url":"/docs/compare/?release=13.16#13.16-a9849bd743d21915","version":"13.16"},{"db_id":"81458e14632112f49a79ce32652e8912","evidence":{"patch_ids":["3eaed2b1263d4410cb744af32c710f13"],"same_day":true,"statement_hash":"7bc0765525feeacfd02af43b9138934794c6b06757eca285a686c8d2901b1ca8"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"修复 PL/Tcl 在返回元组的函数结果中报告无效列表语法时的问题","url":"/docs/compare/?release=12.20#12.20-004857a636f4825e","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["3eaed2b1263d4410cb744af32c710f13"],"same_day":true,"statement_hash":"7bc0765525feeacfd02af43b9138934794c6b06757eca285a686c8d2901b1ca8"},"rule":2,"target":"48a40977310db944b18878fd1d9ee0c0","type":"equivalent"},{"evidence":{"patch_ids":["3eaed2b1263d4410cb744af32c710f13"],"same_day":true,"statement_hash":"7bc0765525feeacfd02af43b9138934794c6b06757eca285a686c8d2901b1ca8"},"rule":2,"target":"5550401bdb6f623616415bcada604ebd","type":"equivalent"},{"evidence":{"patch_ids":["3eaed2b1263d4410cb744af32c710f13"],"same_day":true,"statement_hash":"7bc0765525feeacfd02af43b9138934794c6b06757eca285a686c8d2901b1ca8"},"rule":2,"target":"81458e14632112f49a79ce32652e8912","type":"equivalent"},{"evidence":{"patch_ids":["3eaed2b1263d4410cb744af32c710f13"],"same_day":true,"statement_hash":"7bc0765525feeacfd02af43b9138934794c6b06757eca285a686c8d2901b1ca8"},"rule":2,"target":"cc423f04849acf7f0abdd53b43754337","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["c236ecc82"],"source_entry_id":"16.4/changes/045","source_hash":"9111a22f34c7d3cafec2e845731bf013409caccfbf73cef327576a2ec28a0f3c","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"7bc0765525feeacfd02af43b9138934794c6b06757eca285a686c8d2901b1ca8","text":"修复 PL/Tcl 在返回元组的函数结果中存在无效列表语法时的报告（Erik Wienhold，Tom Lane）§ 这种情况可能导致崩溃，或发出实际上引用的是之前 Tcl 错误的误导性上下文信息。","title":"修复 PL/Tcl 在返回元组的函数结果中存在无效列表语法时的报告","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["1e666fd7c","407048999","6ddc8556c","821fbd63e","95e805e9c","c53016860","da5d7a771"],"commit_groups":[["1e666fd7c","407048999","6ddc8556c","821fbd63e","95e805e9c","c53016860","da5d7a771"]],"commits":["c53016860"],"cves":[],"db_id":"88958dc3f16320c688a325cdb8084269","html":"\u003cp\u003e避免在 \u003cspan\u003elibpq\u003c/span\u003e 中使用非线程安全的 \u003ccode\u003estrerror()\u003c/code\u003e（Peter Eisentraut）\u003ca href=\"https://postgr.es/c/c53016860\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e在多线程应用程序中，OpenSSL 返回的某些错误消息可能会出现乱码。\u003c/p\u003e","id":"16.4-480885de705e9cbb","identity_text":"Avoid non-thread-safe usage of strerror() in libpq (Peter Eisentraut) Certain error messages returned by OpenSSL could become garbled in multi-threaded applications.","part":"changes","patch_ids":["a3d7c4819f76f780b294f0d534f3d386"],"related_changes":[{"db_id":"e2c1ca523a06f58e8aa08aa78a24abfa","evidence":{"patch_ids":["a3d7c4819f76f780b294f0d534f3d386"],"same_day":true,"statement_hash":"8f87b81178c73ff90bca394c44d0b8be66c71dbc73e6f3a2ad680899707d7137"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"避免在 libpq 中使用非线程安全的 strerror()","url":"/docs/compare/?release=15.8#15.8-676c07c2106c1940","version":"15.8"},{"db_id":"097051fd9efc208c987eb76542e64177","evidence":{"patch_ids":["a3d7c4819f76f780b294f0d534f3d386"],"same_day":true,"statement_hash":"8f87b81178c73ff90bca394c44d0b8be66c71dbc73e6f3a2ad680899707d7137"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"避免在 libpq 中使用非线程安全的 strerror()","url":"/docs/compare/?release=14.13#14.13-328c4d72c45dad1d","version":"14.13"},{"db_id":"81834e09775bbfdbf6f1336eb5b59b8a","evidence":{"patch_ids":["a3d7c4819f76f780b294f0d534f3d386"],"same_day":true,"statement_hash":"8f87b81178c73ff90bca394c44d0b8be66c71dbc73e6f3a2ad680899707d7137"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"避免在 libpq 中使用非线程安全的 strerror()","url":"/docs/compare/?release=13.16#13.16-0a633bb50a35294a","version":"13.16"},{"db_id":"0aeace2c7faf71a8f2d23262f81bd107","evidence":{"patch_ids":["a3d7c4819f76f780b294f0d534f3d386"],"same_day":true,"statement_hash":"8f87b81178c73ff90bca394c44d0b8be66c71dbc73e6f3a2ad680899707d7137"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"避免在 libpq 中使用非线程安全的 strerror()","url":"/docs/compare/?release=12.20#12.20-72e701377f35dc6d","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["a3d7c4819f76f780b294f0d534f3d386"],"same_day":true,"statement_hash":"8f87b81178c73ff90bca394c44d0b8be66c71dbc73e6f3a2ad680899707d7137"},"rule":2,"target":"097051fd9efc208c987eb76542e64177","type":"equivalent"},{"evidence":{"patch_ids":["a3d7c4819f76f780b294f0d534f3d386"],"same_day":true,"statement_hash":"8f87b81178c73ff90bca394c44d0b8be66c71dbc73e6f3a2ad680899707d7137"},"rule":2,"target":"0aeace2c7faf71a8f2d23262f81bd107","type":"equivalent"},{"evidence":{"patch_ids":["a3d7c4819f76f780b294f0d534f3d386"],"same_day":true,"statement_hash":"8f87b81178c73ff90bca394c44d0b8be66c71dbc73e6f3a2ad680899707d7137"},"rule":2,"target":"81834e09775bbfdbf6f1336eb5b59b8a","type":"equivalent"},{"evidence":{"patch_ids":["a3d7c4819f76f780b294f0d534f3d386"],"same_day":true,"statement_hash":"8f87b81178c73ff90bca394c44d0b8be66c71dbc73e6f3a2ad680899707d7137"},"rule":2,"target":"e2c1ca523a06f58e8aa08aa78a24abfa","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["c53016860"],"source_entry_id":"16.4/changes/046","source_hash":"c84adda4a0bf773354f418cc1b2cf7c9bd8967877a1fad5f67dc4161ded3e374","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"8f87b81178c73ff90bca394c44d0b8be66c71dbc73e6f3a2ad680899707d7137","text":"避免在 libpq 中使用非线程安全的 strerror()（Peter Eisentraut）§ 在多线程应用程序中，OpenSSL 返回的某些错误消息可能会出现乱码。","title":"避免在 libpq 中使用非线程安全的 strerror()","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["0ae05c18e","a8f87d5d2","e6fc3b70d"],"commit_groups":[["0ae05c18e","a8f87d5d2","e6fc3b70d"]],"commits":["0ae05c18e"],"cves":[],"db_id":"02733820845bacda2e376d3adb5878ed","html":"\u003cp\u003e避免在二进制升级期间 \u003cspan\u003epg_dump\u003c/span\u003e 中的内存泄漏（Daniel Gustafsson）\u003ca href=\"https://postgr.es/c/0ae05c18e\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"16.4-99c844553b0dcc7e","identity_text":"Avoid memory leak within pg_dump during a binary upgrade (Daniel Gustafsson)","part":"changes","patch_ids":["90146dfce83c00667e4e0f922a8a9881"],"related_changes":[{"db_id":"7f8f735de5adf05958f17b37db85bb6b","evidence":{"patch_ids":["90146dfce83c00667e4e0f922a8a9881"],"same_day":true,"statement_hash":"c249e5f9c0d730c0183129af87e7c68db858c63ac1343c15bc95292e3f40c6b1"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"避免在二进制升级期间 pg_dump 中的内存泄漏","url":"/docs/compare/?release=15.8#15.8-71318c2985c4d4b6","version":"15.8"}],"relations":[{"evidence":{"patch_ids":["90146dfce83c00667e4e0f922a8a9881"],"same_day":true,"statement_hash":"c249e5f9c0d730c0183129af87e7c68db858c63ac1343c15bc95292e3f40c6b1"},"rule":2,"target":"7f8f735de5adf05958f17b37db85bb6b","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["0ae05c18e"],"source_entry_id":"16.4/changes/047","source_hash":"f60c0b48da321ab7361ce8c129df6b76770bd1df346bee6ba12c5dd758310ab8","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"c249e5f9c0d730c0183129af87e7c68db858c63ac1343c15bc95292e3f40c6b1","text":"避免在二进制升级期间 pg_dump 中的内存泄漏（Daniel Gustafsson）§","title":"避免在二进制升级期间 pg_dump 中的内存泄漏","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["52b23b4e1","5dce8ce0a","6a458d93b","a3c00ab15","b99dc6694","c1aea206e"],"commit_groups":[["52b23b4e1","5dce8ce0a","6a458d93b","a3c00ab15","b99dc6694","c1aea206e"]],"commits":["5dce8ce0a"],"cves":[],"db_id":"f61b13cb9a14f103337e063320537533","html":"\u003cp\u003e确保 \u003ccode\u003epg_restore\u003c/code\u003e \u003ccode\u003e-l\u003c/code\u003e 正确报告依赖的 TOC 条目（Tom Lane）\u003ca href=\"https://postgr.es/c/5dce8ce0a\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e如果 \u003ccode\u003e-l\u003c/code\u003e 与选择性恢复选项（如 \u003ccode\u003e-n\u003c/code\u003e 或 \u003ccode\u003e-N\u003c/code\u003e）一起指定，依赖的 TOC 条目（如注释）会从列表中被省略，即使实际恢复会选择它们。\u003c/p\u003e","id":"16.4-4465b07bfecef10b","identity_text":"Ensure that pg_restore -l reports dependent TOC entries correctly (Tom Lane) If -l was specified together with selective-restore options such as -n or -N, dependent TOC entries such as comments would be omitted from the listing, even when an actual restore would have selected them.","part":"changes","patch_ids":["fefb994793a8d6b379efb188ae6c7c2b"],"related_changes":[{"db_id":"f16b60ce0607fd8ead7704679cce55a5","evidence":{"patch_ids":["fefb994793a8d6b379efb188ae6c7c2b"],"same_day":true,"statement_hash":"10fc54dae596ed0a5d90649e294eaecdbdf7b4860ba37a7dd0388fd6cccc40cd"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"确保 pg_restore -l 正确报告依赖的 TOC 条目","url":"/docs/compare/?release=15.8#15.8-4465b07bfecef10b","version":"15.8"},{"db_id":"59693ce86d9165ee0f47a1d70e62aa0d","evidence":{"patch_ids":["fefb994793a8d6b379efb188ae6c7c2b"],"same_day":true,"statement_hash":"10fc54dae596ed0a5d90649e294eaecdbdf7b4860ba37a7dd0388fd6cccc40cd"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"确保 pg_restore -l 正确报告依赖的 TOC 条目","url":"/docs/compare/?release=14.13#14.13-4465b07bfecef10b","version":"14.13"},{"db_id":"cf7fcb1e75e9ced39a243606d466d53d","evidence":{"patch_ids":["fefb994793a8d6b379efb188ae6c7c2b"],"same_day":true,"statement_hash":"10fc54dae596ed0a5d90649e294eaecdbdf7b4860ba37a7dd0388fd6cccc40cd"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"确保 pg_restore -l 正确报告依赖的 TOC 条目","url":"/docs/compare/?release=13.16#13.16-f0ea7245a8156863","version":"13.16"},{"db_id":"ca3c38fbb5cc85cea9d2f9c29f2d4456","evidence":{"patch_ids":["fefb994793a8d6b379efb188ae6c7c2b"],"same_day":true,"statement_hash":"10fc54dae596ed0a5d90649e294eaecdbdf7b4860ba37a7dd0388fd6cccc40cd"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"确保 pg_restore -l 正确报告依赖的 TOC 条目","url":"/docs/compare/?release=12.20#12.20-4a38d993e83c9b53","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["fefb994793a8d6b379efb188ae6c7c2b"],"same_day":true,"statement_hash":"10fc54dae596ed0a5d90649e294eaecdbdf7b4860ba37a7dd0388fd6cccc40cd"},"rule":2,"target":"59693ce86d9165ee0f47a1d70e62aa0d","type":"equivalent"},{"evidence":{"patch_ids":["fefb994793a8d6b379efb188ae6c7c2b"],"same_day":true,"statement_hash":"10fc54dae596ed0a5d90649e294eaecdbdf7b4860ba37a7dd0388fd6cccc40cd"},"rule":2,"target":"ca3c38fbb5cc85cea9d2f9c29f2d4456","type":"equivalent"},{"evidence":{"patch_ids":["fefb994793a8d6b379efb188ae6c7c2b"],"same_day":true,"statement_hash":"10fc54dae596ed0a5d90649e294eaecdbdf7b4860ba37a7dd0388fd6cccc40cd"},"rule":2,"target":"cf7fcb1e75e9ced39a243606d466d53d","type":"equivalent"},{"evidence":{"patch_ids":["fefb994793a8d6b379efb188ae6c7c2b"],"same_day":true,"statement_hash":"10fc54dae596ed0a5d90649e294eaecdbdf7b4860ba37a7dd0388fd6cccc40cd"},"rule":2,"target":"f16b60ce0607fd8ead7704679cce55a5","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["5dce8ce0a"],"source_entry_id":"16.4/changes/048","source_hash":"ecda9fae8ab0c7bdc4958d9d9d66cd613d845e58672696b4178ddb54919cc659","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"10fc54dae596ed0a5d90649e294eaecdbdf7b4860ba37a7dd0388fd6cccc40cd","text":"确保 pg_restore -l 正确报告依赖的 TOC 条目（Tom Lane）§ 如果 -l 与选择性恢复选项（如 -n 或 -N）一起指定，依赖的 TOC 条目（如注释）会从列表中被省略，即使实际恢复会选择它们。","title":"确保 pg_restore -l 正确报告依赖的 TOC 条目","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["38e271d3c","9cd365f28","c145f321b"],"commit_groups":[["38e271d3c","9cd365f28","c145f321b"]],"commits":["9cd365f28"],"cves":[],"db_id":"12cc5f5c21e0771eabd532cfd77b50f2","html":"\u003cp\u003e允许 \u003ccode\u003econtrib/pg_stat_statements\u003c/code\u003e 区分出现在 SQL 语言函数中的工具语句（Anthonin Bonnefoy）\u003ca href=\"https://postgr.es/c/9cd365f28\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eSQL 语言函数执行器未能传递为工具（非 \u003ccode\u003eSELECT\u003c/code\u003e/\u003ccode\u003eINSERT\u003c/code\u003e/\u003ccode\u003eUPDATE\u003c/code\u003e/\u003ccode\u003eDELETE\u003c/code\u003e/\u003ccode\u003eMERGE\u003c/code\u003e）语句计算的查询 ID。\u003c/p\u003e","id":"16.4-3fdf6f1128595702","identity_text":"Allow contrib/pg_stat_statements to distinguish among utility statements appearing within SQL-language functions (Anthonin Bonnefoy) The SQL-language function executor failed to pass along the query ID that is computed for a utility (non SELECT/INSERT/UPDATE/DELETE/MERGE) statement.","part":"changes","patch_ids":["2f488ff426348a03269cb2ba3e7b49eb"],"related_changes":[],"relations":[],"section":"变更","section_path":["变更"],"source_commits":["9cd365f28"],"source_entry_id":"16.4/changes/049","source_hash":"aee077c5519ff3951918235e0500a84f5e4baa51b26a252837fa03ffd2553db1","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"431a589f10fee5d4230c3b36c9627ffe18a5f24120eb1365f51e00540b4faada","text":"允许 contrib/pg_stat_statements 区分出现在 SQL 语言函数中的工具语句（Anthonin Bonnefoy）§ SQL 语言函数执行器未能传递为工具（非 SELECT/INSERT/UPDATE/DELETE/MERGE）语句计算的查询 ID。","title":"允许 contrib/pg_stat_statements 区分出现在 SQL 语言函数中的工具语句","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["5c571a34d","935fe79ea","d97f2ee50","f39f3e0fb"],"commit_groups":[["5c571a34d","935fe79ea","d97f2ee50","f39f3e0fb"]],"commits":["d97f2ee50"],"cves":[],"db_id":"8ccfc05d28f0d94894656667beaa981c","html":"\u003cp\u003e避免在 \u003ccode\u003econtrib/postgres_fdw\u003c/code\u003e 中出现 \u003cspan\u003e“\u003cspan\u003ecursor can only scan forward\u003c/span\u003e”\u003c/span\u003e 错误（Etsuro Fujita）\u003ca href=\"https://postgr.es/c/d97f2ee50\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e当远程服务器为 v15 或更高版本且外部表映射到非平凡的远程视图时，可能会出现此错误。\u003c/p\u003e","id":"16.4-b84bae1d9dd32ec5","identity_text":"Avoid cursor can only scan forward error in contrib/postgres_fdw (Etsuro Fujita) This error could occur if the remote server is v15 or later and a foreign table is mapped to a non-trivial remote view.","part":"changes","patch_ids":["8f0ed9791db81e5395bc16080131387a"],"related_changes":[{"db_id":"2e340ccca458849e00c151bae3b9cc0f","evidence":{"patch_ids":["8f0ed9791db81e5395bc16080131387a"],"same_day":true,"statement_hash":"2d8c13a1d6b713fdbeed220429ae4f9a7876f7fd9e3fd738eb9c7db5eeac279b"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"避免在 contrib/postgres_fdw 中出现 “cursor can only scan forward” 错误","url":"/docs/compare/?release=15.8#15.8-44ad4b3a541120e9","version":"15.8"}],"relations":[{"evidence":{"patch_ids":["8f0ed9791db81e5395bc16080131387a"],"same_day":true,"statement_hash":"2d8c13a1d6b713fdbeed220429ae4f9a7876f7fd9e3fd738eb9c7db5eeac279b"},"rule":2,"target":"2e340ccca458849e00c151bae3b9cc0f","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["d97f2ee50"],"source_entry_id":"16.4/changes/050","source_hash":"c9baf967e99b2b6d1f755692a585e8293c0e64f52f5836c30d998d5002e3e4de","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"2d8c13a1d6b713fdbeed220429ae4f9a7876f7fd9e3fd738eb9c7db5eeac279b","text":"避免在 contrib/postgres_fdw 中出现 “cursor can only scan forward” 错误（Etsuro Fujita）§ 当远程服务器为 v15 或更高版本且外部表映射到非平凡的远程视图时，可能会出现此错误。","title":"避免在 contrib/postgres_fdw 中出现 “cursor can only scan forward” 错误","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["269e2c391","2b461efc5","8405d5a37","8cfbac149","b33c141cc"],"commit_groups":[["269e2c391","2b461efc5","8405d5a37","8cfbac149","b33c141cc"]],"commits":["8405d5a37"],"cves":[],"db_id":"4d677e935bf1190a9e3d0be744515d0e","html":"\u003cp\u003e在 \u003ccode\u003econtrib/postgres_fdw\u003c/code\u003e 中，不向远程服务器发送 \u003ccode\u003eFETCH FIRST WITH TIES\u003c/code\u003e 子句（Japin Li）\u003ca href=\"https://postgr.es/c/8405d5a37\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e远程服务器可能不支持此子句，或可能对其解释与本地不同，因此不要冒险尝试远程执行。\u003c/p\u003e","id":"16.4-5f85238ce4d37124","identity_text":"In contrib/postgres_fdw, do not send FETCH FIRST WITH TIES clauses to the remote server (Japin Li) The remote server might not implement this clause, or might interpret it differently than we would locally, so don't risk attempting remote execution.","part":"changes","patch_ids":["af8cadd93c2e4e82af7a0a2a842e2994"],"related_changes":[{"db_id":"c53e7e53d97ef233311ec34321fc6373","evidence":{"patch_ids":["af8cadd93c2e4e82af7a0a2a842e2994"],"same_day":true,"statement_hash":"6ed56b7ba04fbd7adb333f9567fe5298d4c143e3b0df22004014da56081df4c3"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"在 contrib/postgres_fdw 中，不向远程服务器发送 FETCH FIRST WITH TIES 子句","url":"/docs/compare/?release=15.8#15.8-5f85238ce4d37124","version":"15.8"},{"db_id":"578e3fc179af8baa9c81cecfb8dee4be","evidence":{"patch_ids":["af8cadd93c2e4e82af7a0a2a842e2994"],"same_day":true,"statement_hash":"6ed56b7ba04fbd7adb333f9567fe5298d4c143e3b0df22004014da56081df4c3"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"在 contrib/postgres_fdw 中，不向远程服务器发送 FETCH FIRST WITH TIES 子句","url":"/docs/compare/?release=14.13#14.13-5f85238ce4d37124","version":"14.13"},{"db_id":"459b25750cf24b7abdb4054a6a1f8343","evidence":{"patch_ids":["af8cadd93c2e4e82af7a0a2a842e2994"],"same_day":true,"statement_hash":"6ed56b7ba04fbd7adb333f9567fe5298d4c143e3b0df22004014da56081df4c3"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"在 contrib/postgres_fdw 中，不要将 FETCH FIRST WITH TIES 子句发送到远程服务器","url":"/docs/compare/?release=13.16#13.16-777bd2caa21a3409","version":"13.16"}],"relations":[{"evidence":{"patch_ids":["af8cadd93c2e4e82af7a0a2a842e2994"],"same_day":true,"statement_hash":"6ed56b7ba04fbd7adb333f9567fe5298d4c143e3b0df22004014da56081df4c3"},"rule":2,"target":"459b25750cf24b7abdb4054a6a1f8343","type":"equivalent"},{"evidence":{"patch_ids":["af8cadd93c2e4e82af7a0a2a842e2994"],"same_day":true,"statement_hash":"6ed56b7ba04fbd7adb333f9567fe5298d4c143e3b0df22004014da56081df4c3"},"rule":2,"target":"578e3fc179af8baa9c81cecfb8dee4be","type":"equivalent"},{"evidence":{"patch_ids":["af8cadd93c2e4e82af7a0a2a842e2994"],"same_day":true,"statement_hash":"6ed56b7ba04fbd7adb333f9567fe5298d4c143e3b0df22004014da56081df4c3"},"rule":2,"target":"c53e7e53d97ef233311ec34321fc6373","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["8405d5a37"],"source_entry_id":"16.4/changes/051","source_hash":"d87398e474e61515d875018befe2ac53fb9265f2f6e97dddc5ed0da00509db3c","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"6ed56b7ba04fbd7adb333f9567fe5298d4c143e3b0df22004014da56081df4c3","text":"在 contrib/postgres_fdw 中，不向远程服务器发送 FETCH FIRST WITH TIES 子句（Japin Li）§ 远程服务器可能不支持此子句，或可能对其解释与本地不同，因此不要冒险尝试远程执行。","title":"在 contrib/postgres_fdw 中，不向远程服务器发送 FETCH FIRST WITH TIES 子句","variants":[],"version":"16.4"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["274a8195d","2a5ef0983","31423bc44","440aedc0f","467d77bb1","9c273679b","c2342a925"],"commit_groups":[["274a8195d","2a5ef0983","31423bc44","440aedc0f","467d77bb1","9c273679b","c2342a925"]],"commits":["31423bc44"],"cves":[],"db_id":"d29e5cca14c0b5e9e789a13bcaeabd29","html":"\u003cp\u003e避免与系统提供的 \u003ccode\u003e\u0026lt;regex.h\u0026gt;\u003c/code\u003e 头文件冲突（Thomas Munro）\u003ca href=\"https://postgr.es/c/31423bc44\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这修复了 macOS 版本 15 及更高版本上的编译失败。\u003c/p\u003e","id":"16.4-da61a48deb079685","identity_text":"Avoid clashing with system-provided \u003cregex.h\u003e headers (Thomas Munro) This fixes a compilation failure on macOS version 15 and up.","part":"changes","patch_ids":["f299b243be09786873c169990e7a8a0f"],"related_changes":[{"db_id":"892025c3aeba77f7c8887c5900e76955","evidence":{"patch_ids":["f299b243be09786873c169990e7a8a0f"],"same_day":true,"statement_hash":"c7ae8a631c152ec96034cc3b7a0aeb4612fa0233f65b8079ce920f0ed199db26"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"避免与系统提供的 \u003cregex.h\u003e 头文件冲突","url":"/docs/compare/?release=15.8#15.8-7fa723089ac8b4c3","version":"15.8"},{"db_id":"115125c5dfb8e0c8580ccd73e9865f79","evidence":{"patch_ids":["f299b243be09786873c169990e7a8a0f"],"same_day":true,"statement_hash":"c7ae8a631c152ec96034cc3b7a0aeb4612fa0233f65b8079ce920f0ed199db26"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"避免与系统提供的 \u003cregex.h\u003e 头文件冲突","url":"/docs/compare/?release=14.13#14.13-84d33b54cec13c7c","version":"14.13"},{"db_id":"59eef511e4d0d4762bed8161960d8f5f","evidence":{"patch_ids":["f299b243be09786873c169990e7a8a0f"],"same_day":true,"statement_hash":"c7ae8a631c152ec96034cc3b7a0aeb4612fa0233f65b8079ce920f0ed199db26"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"避免与系统提供的 \u003cregex.h\u003e 头文件冲突","url":"/docs/compare/?release=13.16#13.16-d7f3dd9093eead02","version":"13.16"},{"db_id":"41c841abecf24c0a6b781847df943ea3","evidence":{"patch_ids":["f299b243be09786873c169990e7a8a0f"],"same_day":true,"statement_hash":"c7ae8a631c152ec96034cc3b7a0aeb4612fa0233f65b8079ce920f0ed199db26"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"避免与系统提供的 \u003cregex.h\u003e 头文件冲突","url":"/docs/compare/?release=12.20#12.20-9580cbede555c2f2","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["f299b243be09786873c169990e7a8a0f"],"same_day":true,"statement_hash":"c7ae8a631c152ec96034cc3b7a0aeb4612fa0233f65b8079ce920f0ed199db26"},"rule":2,"target":"115125c5dfb8e0c8580ccd73e9865f79","type":"equivalent"},{"evidence":{"patch_ids":["f299b243be09786873c169990e7a8a0f"],"same_day":true,"statement_hash":"c7ae8a631c152ec96034cc3b7a0aeb4612fa0233f65b8079ce920f0ed199db26"},"rule":2,"target":"41c841abecf24c0a6b781847df943ea3","type":"equivalent"},{"evidence":{"patch_ids":["f299b243be09786873c169990e7a8a0f"],"same_day":true,"statement_hash":"c7ae8a631c152ec96034cc3b7a0aeb4612fa0233f65b8079ce920f0ed199db26"},"rule":2,"target":"59eef511e4d0d4762bed8161960d8f5f","type":"equivalent"},{"evidence":{"patch_ids":["f299b243be09786873c169990e7a8a0f"],"same_day":true,"statement_hash":"c7ae8a631c152ec96034cc3b7a0aeb4612fa0233f65b8079ce920f0ed199db26"},"rule":2,"target":"892025c3aeba77f7c8887c5900e76955","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["31423bc44"],"source_entry_id":"16.4/changes/052","source_hash":"3e016999d7a12b399a4ae3a5d6b4434c61e3e040ac92226b53dd2de2ea140319","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"c7ae8a631c152ec96034cc3b7a0aeb4612fa0233f65b8079ce920f0ed199db26","text":"避免与系统提供的 \u003cregex.h\u003e 头文件冲突（Thomas Munro）§ 这修复了 macOS 版本 15 及更高版本上的编译失败。","title":"避免与系统提供的 \u003cregex.h\u003e 头文件冲突","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["27c6242a0","6143c9c03","aa901a37c","dae9f16aa"],"commit_groups":[["27c6242a0","6143c9c03","aa901a37c","dae9f16aa"]],"commits":["dae9f16aa"],"cves":[],"db_id":"25751ad4e71de0a52ec523f98a6bc9e2","html":"\u003cp\u003e修复 Memoize 代价估算中无害的断言失败（David Rowley）\u003ca href=\"https://postgr.es/c/dae9f16aa\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"16.4-54f10c000d4de9ae","identity_text":"Fix otherwise-harmless assertion failure in Memoize cost estimation (David Rowley)","part":"changes","patch_ids":["ade48b4f0aa81affd8f791862fcafbb6"],"related_changes":[{"db_id":"b41f00e16ce18a50cab6e1a44d3257a2","evidence":{"patch_ids":["ade48b4f0aa81affd8f791862fcafbb6"],"same_day":true,"statement_hash":"288f5eca9b41b17c866ebb012dab2eb5c045b6fc831d67505eaed1f274c5f94c"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复 Memoize 代价估算中无害的断言失败","url":"/docs/compare/?release=15.8#15.8-71af27b8e83efd31","version":"15.8"},{"db_id":"77079c980d8b56fa9f5bab0086844c3a","evidence":{"patch_ids":["ade48b4f0aa81affd8f791862fcafbb6"],"same_day":true,"statement_hash":"288f5eca9b41b17c866ebb012dab2eb5c045b6fc831d67505eaed1f274c5f94c"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"修复 Memoize 代价估算中无害的断言失败","url":"/docs/compare/?release=14.13#14.13-54f10c000d4de9ae","version":"14.13"}],"relations":[{"evidence":{"patch_ids":["ade48b4f0aa81affd8f791862fcafbb6"],"same_day":true,"statement_hash":"288f5eca9b41b17c866ebb012dab2eb5c045b6fc831d67505eaed1f274c5f94c"},"rule":2,"target":"77079c980d8b56fa9f5bab0086844c3a","type":"equivalent"},{"evidence":{"patch_ids":["ade48b4f0aa81affd8f791862fcafbb6"],"same_day":true,"statement_hash":"288f5eca9b41b17c866ebb012dab2eb5c045b6fc831d67505eaed1f274c5f94c"},"rule":2,"target":"b41f00e16ce18a50cab6e1a44d3257a2","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["6143c9c03"],"source_entry_id":"16.4/changes/053","source_hash":"cf63bf15743f0e66af257d485038daea79538529781a9bf975e69feab6834fc7","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"288f5eca9b41b17c866ebb012dab2eb5c045b6fc831d67505eaed1f274c5f94c","text":"修复 Memoize 代价估算中无害的断言失败（David Rowley）§","title":"修复 Memoize 代价估算中无害的断言失败","variants":[],"version":"16.4"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["06f81fed3","3e3e2ebea","507a900ad","92c49d106","e4a55378f","f55083319"],"commit_groups":[["06f81fed3","3e3e2ebea","507a900ad","92c49d106","e4a55378f","f55083319"]],"commits":["06f81fed3"],"cves":[],"db_id":"7d3e82dd05e4622c8a36d190512af0c5","html":"\u003cp\u003e修复对 SP-GiST 索引执行 \u003ccode\u003eREINDEX CONCURRENTLY\u003c/code\u003e 时的无害断言失败（Tom Lane）\u003ca href=\"https://postgr.es/c/06f81fed3\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"16.4-4c9cf35c87383b40","identity_text":"Fix otherwise-harmless assertion failures in REINDEX CONCURRENTLY applied to an SP-GiST index (Tom Lane)","part":"changes","patch_ids":["53caddfa058704bdf1813c8355d9cfb9"],"related_changes":[{"db_id":"90364bf4105ea19c37634826d8620a36","evidence":{"patch_ids":["53caddfa058704bdf1813c8355d9cfb9"],"same_day":true,"statement_hash":"6f74f46f2c2c96068e23b24b5ec4da43a9e1b150b9d073d99edd196871672191"},"kind":"equivalent","label":"15.8","source_url":"/docs/release/15.8/#ZH-AUTO-RELEASE-15-SECT2-20","title":"修复对 SP-GiST 索引执行 REINDEX CONCURRENTLY 时的无害断言失败","url":"/docs/compare/?release=15.8#15.8-4c9cf35c87383b40","version":"15.8"},{"db_id":"8414e5c5ff4bcaa9b5887890ca1efbfe","evidence":{"patch_ids":["53caddfa058704bdf1813c8355d9cfb9"],"same_day":true,"statement_hash":"6f74f46f2c2c96068e23b24b5ec4da43a9e1b150b9d073d99edd196871672191"},"kind":"equivalent","label":"14.13","source_url":"/docs/release/14.13/#ZH-AUTO-RELEASE-14-SECT2-20","title":"修复对 SP-GiST 索引执行 REINDEX CONCURRENTLY 时的无害断言失败","url":"/docs/compare/?release=14.13#14.13-4c9cf35c87383b40","version":"14.13"},{"db_id":"124a495b047deb5a0cb95e1f6de4f212","evidence":{"patch_ids":["53caddfa058704bdf1813c8355d9cfb9"],"same_day":true,"statement_hash":"6f74f46f2c2c96068e23b24b5ec4da43a9e1b150b9d073d99edd196871672191"},"kind":"equivalent","label":"13.16","source_url":"/docs/release/13.16/#id-1.11.6.13.5","title":"修复对 SP-GiST 索引应用 REINDEX CONCURRENTLY 时无害的断言失败","url":"/docs/compare/?release=13.16#13.16-144b5161fc78409a","version":"13.16"},{"db_id":"73ce7a765d417fd304fe569e69b6b178","evidence":{"patch_ids":["53caddfa058704bdf1813c8355d9cfb9"],"same_day":true,"statement_hash":"6f74f46f2c2c96068e23b24b5ec4da43a9e1b150b9d073d99edd196871672191"},"kind":"equivalent","label":"12.20","source_url":"/docs/release/12.20/#id-1.11.6.8.6","title":"修复对 SP-GiST 索引应用 REINDEX CONCURRENTLY 时无害的断言失败","url":"/docs/compare/?release=12.20#12.20-1ee580be1ce9dbcf","version":"12.20"}],"relations":[{"evidence":{"patch_ids":["53caddfa058704bdf1813c8355d9cfb9"],"same_day":true,"statement_hash":"6f74f46f2c2c96068e23b24b5ec4da43a9e1b150b9d073d99edd196871672191"},"rule":2,"target":"124a495b047deb5a0cb95e1f6de4f212","type":"equivalent"},{"evidence":{"patch_ids":["53caddfa058704bdf1813c8355d9cfb9"],"same_day":true,"statement_hash":"6f74f46f2c2c96068e23b24b5ec4da43a9e1b150b9d073d99edd196871672191"},"rule":2,"target":"73ce7a765d417fd304fe569e69b6b178","type":"equivalent"},{"evidence":{"patch_ids":["53caddfa058704bdf1813c8355d9cfb9"],"same_day":true,"statement_hash":"6f74f46f2c2c96068e23b24b5ec4da43a9e1b150b9d073d99edd196871672191"},"rule":2,"target":"8414e5c5ff4bcaa9b5887890ca1efbfe","type":"equivalent"},{"evidence":{"patch_ids":["53caddfa058704bdf1813c8355d9cfb9"],"same_day":true,"statement_hash":"6f74f46f2c2c96068e23b24b5ec4da43a9e1b150b9d073d99edd196871672191"},"rule":2,"target":"90364bf4105ea19c37634826d8620a36","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["06f81fed3"],"source_entry_id":"16.4/changes/054","source_hash":"0a1b43ef48e2414525455127efd0337905ffab212cbf4e9304700f0e52598b4b","source_url":"/docs/release/16.4/#RELEASE-16-4-CHANGES","statement_hash":"6f74f46f2c2c96068e23b24b5ec4da43a9e1b150b9d073d99edd196871672191","text":"修复对 SP-GiST 索引执行 REINDEX CONCURRENTLY 时的无害断言失败（Tom Lane）§","title":"修复对 SP-GiST 索引执行 REINDEX CONCURRENTLY 时的无害断言失败","variants":[],"version":"16.4"}],"entry_count":54,"eol":"2028-11-09","eol_date":"2028-11-09","label":"16.4","major":"16","manual":"16","manual_build":"16.15","manual_url":"/docs/16/release-16-4.html","migration_html":"\u003cp\u003e对于运行 16.X 的用户，不需要执行导出/恢复。\u003c/p\u003e\n\u003cp\u003e但是，如果你从早于 16.3 的版本升级，请参见\u003ca href=\"/docs/16/release-16-3.html\" title=\"E.13. 发布版本 16.3\"\u003e第 E.13 节\u003c/a\u003e。\u003c/p\u003e","minor":4,"placeholder":false,"source_as_of":"","source_url":"/docs/release/16.4/","status":"stable","status_label":"Supported","support_days":761,"supported":true,"version":"16.4"}],"mode":"release","release_count":1,"remaining_cves":[],"security_as_of":"2026-09-26","security_regressions":[],"source_as_of":"2026-09-26","stats":[{"count":54,"key":"all","label":"All changes"},{"count":0,"key":"feature","label":"Features"},{"count":27,"key":"bugfix","label":"Bug fixes"},{"count":2,"key":"security","label":"Security"},{"count":0,"key":"performance","label":"Performance"},{"count":0,"key":"compatibility","label":"Compatibility"},{"count":25,"key":"improvement","label":"Improvements"}],"to_release":{"age_days":793,"build":"16.4","changes_count":54,"compatibility_count":0,"content_hash":"cc79dabde261f73951ba422830769f109eb046610e91033647d2e887c93aed24","date":"2024-08-08","date_text":"2024-08-08","doc_git":"","doc_loaded_at":"2026-09-26T02:56:37.084400","entry_count":54,"eol":"2028-11-09","eol_date":"2028-11-09","label":"16.4","major":"16","manual":"16","manual_build":"16.15","manual_url":"/docs/16/release-16-4.html","migration_html":"\u003cp\u003e对于运行 16.X 的用户，不需要执行导出/恢复。\u003c/p\u003e\n\u003cp\u003e但是，如果你从早于 16.3 的版本升级，请参见\u003ca href=\"/docs/16/release-16-3.html\" title=\"E.13. 发布版本 16.3\"\u003e第 E.13 节\u003c/a\u003e。\u003c/p\u003e","minor":4,"placeholder":false,"source_as_of":"","source_url":"/docs/release/16.4/","status":"stable","status_label":"Supported","support_days":761,"supported":true,"version":"16.4"},"total":54,"warnings":[]}
