{"format": 1, "mode": "release", "from_release": null, "to_release": {"date": "2025-08-14", "build": "14.19", "major": "14", "minor": 19, "manual": "14", "status": "stable", "doc_git": "", "version": "14.19", "eol_date": "2026-11-12", "date_text": "2025-08-14", "supported": true, "manual_url": "/docs/14/release-14-19.html", "source_url": "/docs/release/14.19/", "entry_count": 47, "placeholder": false, "content_hash": "455c5c4db5290507c2a5c20489990dc3c7de35030f0698b42891b7d1693b5293", "manual_build": "14.24", "source_as_of": "", "changes_count": 47, "doc_loaded_at": "2026-09-26T02:56:39.341991", "migration_html": "<p>对于运行 14.X 的用户，不需要执行导出/恢复。</p>\n<p>不过，如果你有任何 BRIN <code>numeric_minmax_multi_ops</code> 索引，建议在更新后对其重建索引。见下文第四条变更记录。</p>\n<p>另外，如果是从早于 14.18 的版本升级，请参见<a href=\"/docs/14/release-14-18.html\" title=\"E.7. 发布版本 14.18\">第 E.7 节</a>。</p>", "compatibility_count": 0, "label": "14.19", "status_label": "受支持版本", "eol": "2026-11-12", "age_days": 412, "support_days": 43}, "groups": [{"date": "2025-08-14", "build": "14.19", "major": "14", "minor": 19, "manual": "14", "status": "stable", "doc_git": "", "version": "14.19", "eol_date": "2026-11-12", "date_text": "2025-08-14", "supported": true, "manual_url": "/docs/14/release-14-19.html", "source_url": "/docs/release/14.19/", "entry_count": 47, "placeholder": false, "content_hash": "455c5c4db5290507c2a5c20489990dc3c7de35030f0698b42891b7d1693b5293", "manual_build": "14.24", "source_as_of": "", "changes_count": 47, "doc_loaded_at": "2026-09-26T02:56:39.341991", "migration_html": "<p>对于运行 14.X 的用户，不需要执行导出/恢复。</p>\n<p>不过，如果你有任何 BRIN <code>numeric_minmax_multi_ops</code> 索引，建议在更新后对其重建索引。见下文第四条变更记录。</p>\n<p>另外，如果是从早于 14.18 的版本升级，请参见<a href=\"/docs/14/release-14-18.html\" title=\"E.7. 发布版本 14.18\">第 E.7 节</a>。</p>", "compatibility_count": 0, "label": "14.19", "status_label": "受支持版本", "eol": "2026-11-12", "age_days": 412, "support_days": 43, "entries": [{"id": "14.19-37596904cdde57bc", "cves": ["CVE-2017-7484", "CVE-2025-8713"], "html": "<p>加强规划器估算函数中的安全检查（Dean Rasheed）<a href=\"https://postgr.es/c/afe38fb6a\">§</a></p>\n<p>针对 CVE-2017-7484 的修复及后续修复，旨在防止泄漏函数被应用于调用用户无权读取的列的统计数据。在该保护措施中发现了两个漏洞。其中一个漏洞适用于分区和继承层次结构，其中表上的 RLS 策略应当限制对统计数据的访问，但实际上并未限制。</p>\n<p>另一个漏洞适用于查询通过视图访问表的情况，其中视图所有者有权读取底层表，但调用用户没有视图的权限。视图所有者的权限满足了安全检查，而泄漏函数会在我们检查调用用户对视图的权限之前就被应用于底层表的统计数据。此问题已通过在规划开始时对视图进行安全检查来修复。这可能会导致权限错误比之前更早发生。</p>\n<p><span>PostgreSQL</span> 项目感谢 Dean Rasheed 报告此问题。（CVE-2025-8713）</p>", "text": "加强规划器估算函数中的安全检查（Dean Rasheed）§ 针对 CVE-2017-7484 的修复及后续修复，旨在防止泄漏函数被应用于调用用户无权读取的列的统计数据。在该保护措施中发现了两个漏洞。其中一个漏洞适用于分区和继承层次结构，其中表上的 RLS 策略应当限制对统计数据的访问，但实际上并未限制。 另一个漏洞适用于查询通过视图访问表的情况，其中视图所有者有权读取底层表，但调用用户没有视图的权限。视图所有者的权限满足了安全检查，而泄漏函数会在我们检查调用用户对视图的权限之前就被应用于底层表的统计数据。此问题已通过在规划开始时对视图进行安全检查来修复。这可能会导致权限错误比之前更早发生。 PostgreSQL 项目感谢 Dean Rasheed 报告此问题。（CVE-2025-8713）", "title": "加强规划器估算函数中的安全检查", "commits": ["afe38fb6a"], "section": "变更", "category": "security", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "026ea0f906bd15a4093b58e70327a941f8c78c589a2d61d7cec52cd58cbc11f5", "section_path": ["变更"], "commit_groups": [["22424953c", "415badc13", "533211ded", "64f77c6a6", "7e86da539", "a85eddab2", "afe38fb6a"]], "identity_text": "Tighten security checks in planner estimation functions (Dean Rasheed) The fix for CVE-2017-7484, plus followup fixes, intended to prevent leaky functions from being applied to statistics data for columns that the calling user does not have permission to read. Two gaps in that protection have been found. One gap applies to partitioning and inheritance hierarchies where RLS policies on the tables should restrict access to statistics data, but did not. The other gap applies to cases where the query accesses a table via a view, and the view owner has permissions to read the underlying table but the calling user does not have permissions on the view. The view owner's permissions satisfied the security checks, and the leaky function would get applied to the underlying table's statistics before we check the calling user's permissions on the view. This has been fixed by making security checks on views occur at the start of planning. That might cause permissions failures to occur earlier than before. The PostgreSQL Project thanks Dean Rasheed for reporting this problem. (CVE-2025-8713)", "commit_aliases": ["22424953c", "415badc13", "533211ded", "64f77c6a6", "7e86da539", "a85eddab2", "afe38fb6a"], "source_commits": ["afe38fb6a"], "source_entry_id": "14.19/changes/001", "db_id": "61dc46af7f1da97de62a07c6c1063f4e", "patch_ids": ["0aa32d55e226afa9d177c29444a6c052"], "statement_hash": "b5a2c913f8e54333d177ebe317094715182eb911d0a897cf899b5caac948654c", "relations": [{"rule": 2, "type": "equivalent", "target": "4008a7a7d764b0695b4f8cb5eecbc29c", "evidence": {"same_day": true, "patch_ids": ["0aa32d55e226afa9d177c29444a6c052"], "statement_hash": "b5a2c913f8e54333d177ebe317094715182eb911d0a897cf899b5caac948654c"}}, {"rule": 2, "type": "equivalent", "target": "672931f9e1dc343ad721ab8a9cdda772", "evidence": {"same_day": true, "patch_ids": ["0aa32d55e226afa9d177c29444a6c052"], "statement_hash": "b5a2c913f8e54333d177ebe317094715182eb911d0a897cf899b5caac948654c"}}, {"rule": 2, "type": "equivalent", "target": "bc9c4792b1c85d7d0f1221cc9bbea0a3", "evidence": {"same_day": true, "patch_ids": ["0aa32d55e226afa9d177c29444a6c052"], "statement_hash": "b5a2c913f8e54333d177ebe317094715182eb911d0a897cf899b5caac948654c"}}, {"rule": 2, "type": "equivalent", "target": "db7e96e5834fa62952eee3d912b2a351", "evidence": {"same_day": true, "patch_ids": ["0aa32d55e226afa9d177c29444a6c052"], "statement_hash": "b5a2c913f8e54333d177ebe317094715182eb911d0a897cf899b5caac948654c"}}], "version": "14.19", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "4008a7a7d764b0695b4f8cb5eecbc29c", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "加强规划器估算函数中的安全检查", "evidence": {"same_day": true, "patch_ids": ["0aa32d55e226afa9d177c29444a6c052"], "statement_hash": "b5a2c913f8e54333d177ebe317094715182eb911d0a897cf899b5caac948654c"}, "url": "/docs/compare/?release=17.6#17.6-235b908f6ae5f3ee", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "672931f9e1dc343ad721ab8a9cdda772", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "加强规划器估算函数中的安全检查", "evidence": {"same_day": true, "patch_ids": ["0aa32d55e226afa9d177c29444a6c052"], "statement_hash": "b5a2c913f8e54333d177ebe317094715182eb911d0a897cf899b5caac948654c"}, "url": "/docs/compare/?release=16.10#16.10-423dcb75ca30c201", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "bc9c4792b1c85d7d0f1221cc9bbea0a3", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "加强规划器估算函数中的安全检查", "evidence": {"same_day": true, "patch_ids": ["0aa32d55e226afa9d177c29444a6c052"], "statement_hash": "b5a2c913f8e54333d177ebe317094715182eb911d0a897cf899b5caac948654c"}, "url": "/docs/compare/?release=15.14#15.14-52cce071b03c8e4a", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "db7e96e5834fa62952eee3d912b2a351", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "加强规划器估算函数中的安全检查", "evidence": {"same_day": true, "patch_ids": ["0aa32d55e226afa9d177c29444a6c052"], "statement_hash": "b5a2c913f8e54333d177ebe317094715182eb911d0a897cf899b5caac948654c"}, "url": "/docs/compare/?release=13.22#13.22-639d2c839166c19d", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-7d06a1d1ebfb29d7", "cves": ["CVE-2025-8714"], "html": "<p>防止 <span>pg_dump</span> 脚本被用于攻击执行恢复的用户（Nathan Bossart）<a href=\"https://postgr.es/c/e4998d089\">§</a> <a href=\"https://postgr.es/c/8967c33c6\">§</a></p>\n<p>由于导出/恢复操作通常涉及以超级用户身份运行 SQL 命令，目标数据库安装必须信任源服务器。然而，这并不意味着执行 <span>psql</span> 进行恢复的操作系统用户也需要信任源服务器。这里的风险是，已获得源服务器超级用户级别控制权的攻击者可能会使其生成被解释为 <span>psql</span> 元命令的文本。这将提供对恢复用户自身帐户的 shell 级别访问，独立于对目标数据库的访问。</p>\n<p>为了提供确保不会发生此问题的正面保证，扩展了 <span>psql</span>，增加了 <code>\\restrict</code> 命令来阻止执行后续的元命令，并让 <span>pg_dump</span> 在来自源服务器的任何数据之前发出该命令。</p>\n<p>PostgreSQL 项目感谢 Martin Rakhmanov、Matthieu Denais 和 RyotaK 报告此问题。（CVE-2025-8714）</p>", "text": "防止 pg_dump 脚本被用于攻击执行恢复的用户（Nathan Bossart）§ § 由于导出/恢复操作通常涉及以超级用户身份运行 SQL 命令，目标数据库安装必须信任源服务器。然而，这并不意味着执行 psql 进行恢复的操作系统用户也需要信任源服务器。这里的风险是，已获得源服务器超级用户级别控制权的攻击者可能会使其生成被解释为 psql 元命令的文本。这将提供对恢复用户自身帐户的 shell 级别访问，独立于对目标数据库的访问。 为了提供确保不会发生此问题的正面保证，扩展了 psql，增加了 \\restrict 命令来阻止执行后续的元命令，并让 pg_dump 在来自源服务器的任何数据之前发出该命令。 PostgreSQL 项目感谢 Martin Rakhmanov、Matthieu Denais 和 RyotaK 报告此问题。（CVE-2025-8714）", "title": "防止 pg_dump 脚本被用于攻击执行恢复的用户", "commits": ["8967c33c6", "e4998d089"], "section": "变更", "category": "security", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "bd1df0e2d0140250e535395f0dfd0b351e0bd0dd734f28663ca78d5d69ea8945", "section_path": ["变更"], "commit_groups": [["27d3dee68", "8967c33c6"], ["424040506", "575f54d4c", "67a2fbb8f", "71ea0d679", "7ad8e7909", "c204bd39f", "e4998d089"]], "identity_text": "Prevent pg_dump scripts from being used to attack the user running the restore (Nathan Bossart) Since dump/restore operations typically involve running SQL commands as superuser, the target database installation must trust the source server. However, it does not follow that the operating system user who executes psql to perform the restore should have to trust the source server. The risk here is that an attacker who has gained superuser-level control over the source server might be able to cause it to emit text that would be interpreted as psql meta-commands. That would provide shell-level access to the restoring user's own account, independently of access to the target database. To provide a positive guarantee that this can't happen, extend psql with a \\restrict command that prevents execution of further meta-commands, and teach pg_dump to issue that before any data coming from the source server. The PostgreSQL Project thanks Martin Rakhmanov, Matthieu Denais, and RyotaK for reporting this problem. (CVE-2025-8714)", "commit_aliases": ["27d3dee68", "424040506", "575f54d4c", "67a2fbb8f", "71ea0d679", "7ad8e7909", "8967c33c6", "c204bd39f", "e4998d089"], "source_commits": ["8967c33c6", "e4998d089"], "source_entry_id": "14.19/changes/002", "db_id": "2995efbedeebcfc1ca35284729dc63ca", "patch_ids": ["a88fbc1d59a5e722f1cb99fc8acd42be", "c340e675e09ada8e08edff5a1a3a3ae8"], "statement_hash": "0b4e588c95eb5bd3d79fce471c6627a69abf65eb71c549b5ef14a7a91adbcc3a", "relations": [{"rule": 2, "type": "equivalent", "target": "69c7f2c77e9261cdc8fe8d36c3769742", "evidence": {"same_day": true, "patch_ids": ["a88fbc1d59a5e722f1cb99fc8acd42be", "c340e675e09ada8e08edff5a1a3a3ae8"], "statement_hash": "0b4e588c95eb5bd3d79fce471c6627a69abf65eb71c549b5ef14a7a91adbcc3a"}}, {"rule": 2, "type": "equivalent", "target": "93ac3cfe25f78778dca8ff85e31817be", "evidence": {"same_day": true, "patch_ids": ["a88fbc1d59a5e722f1cb99fc8acd42be", "c340e675e09ada8e08edff5a1a3a3ae8"], "statement_hash": "0b4e588c95eb5bd3d79fce471c6627a69abf65eb71c549b5ef14a7a91adbcc3a"}}, {"rule": 2, "type": "equivalent", "target": "caaaa341c31c9018981e72d6161a2801", "evidence": {"same_day": true, "patch_ids": ["a88fbc1d59a5e722f1cb99fc8acd42be", "c340e675e09ada8e08edff5a1a3a3ae8"], "statement_hash": "0b4e588c95eb5bd3d79fce471c6627a69abf65eb71c549b5ef14a7a91adbcc3a"}}, {"rule": 2, "type": "equivalent", "target": "dc692223d4e4409943580a9615f51575", "evidence": {"same_day": true, "patch_ids": ["a88fbc1d59a5e722f1cb99fc8acd42be", "c340e675e09ada8e08edff5a1a3a3ae8"], "statement_hash": "0b4e588c95eb5bd3d79fce471c6627a69abf65eb71c549b5ef14a7a91adbcc3a"}}], "version": "14.19", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "93ac3cfe25f78778dca8ff85e31817be", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "防止 pg_dump 脚本被用于攻击执行恢复的用户", "evidence": {"same_day": true, "patch_ids": ["a88fbc1d59a5e722f1cb99fc8acd42be", "c340e675e09ada8e08edff5a1a3a3ae8"], "statement_hash": "0b4e588c95eb5bd3d79fce471c6627a69abf65eb71c549b5ef14a7a91adbcc3a"}, "url": "/docs/compare/?release=17.6#17.6-5be27cec56fb902a", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "69c7f2c77e9261cdc8fe8d36c3769742", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "防止 pg_dump 脚本被用于攻击执行恢复的用户", "evidence": {"same_day": true, "patch_ids": ["a88fbc1d59a5e722f1cb99fc8acd42be", "c340e675e09ada8e08edff5a1a3a3ae8"], "statement_hash": "0b4e588c95eb5bd3d79fce471c6627a69abf65eb71c549b5ef14a7a91adbcc3a"}, "url": "/docs/compare/?release=16.10#16.10-631fe2b5cc95bf19", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "dc692223d4e4409943580a9615f51575", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "防止 pg_dump 脚本被用于攻击执行恢复的用户", "evidence": {"same_day": true, "patch_ids": ["a88fbc1d59a5e722f1cb99fc8acd42be", "c340e675e09ada8e08edff5a1a3a3ae8"], "statement_hash": "0b4e588c95eb5bd3d79fce471c6627a69abf65eb71c549b5ef14a7a91adbcc3a"}, "url": "/docs/compare/?release=15.14#15.14-792ea6321c8a946b", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "caaaa341c31c9018981e72d6161a2801", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "防止 pg_dump 脚本被用于攻击执行恢复的用户", "evidence": {"same_day": true, "patch_ids": ["a88fbc1d59a5e722f1cb99fc8acd42be", "c340e675e09ada8e08edff5a1a3a3ae8"], "statement_hash": "0b4e588c95eb5bd3d79fce471c6627a69abf65eb71c549b5ef14a7a91adbcc3a"}, "url": "/docs/compare/?release=13.22#13.22-2c8737193994e3d6", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-fb4152603ed81a9f", "cves": ["CVE-2012-0868", "CVE-2025-8715"], "html": "<p>在 <span>pg_dump</span> 输出的注释中，将名称中包含的换行符转换为空格（Noah Misch）<a href=\"https://postgr.es/c/0f5838438\">§</a></p>\n<p>包含换行符的对象名称提供了向输出脚本中注入任意 SQL 命令的能力。（如果没有前述的修复，通过这种方式注入 <span>psql</span> 元命令也是可能的。）CVE-2012-0868 曾在当时修复了这类问题，但后续的工作重新引入了若干情况。</p>\n<p><span>PostgreSQL</span> 项目感谢 Noah Misch 报告此问题。（CVE-2025-8715）</p>", "text": "在 pg_dump 输出的注释中，将名称中包含的换行符转换为空格（Noah Misch）§ 包含换行符的对象名称提供了向输出脚本中注入任意 SQL 命令的能力。（如果没有前述的修复，通过这种方式注入 psql 元命令也是可能的。）CVE-2012-0868 曾在当时修复了这类问题，但后续的工作重新引入了若干情况。 PostgreSQL 项目感谢 Noah Misch 报告此问题。（CVE-2025-8715）", "title": "在 pg_dump 输出的注释中，将名称中包含的换行符转换为空格", "commits": ["0f5838438"], "section": "变更", "category": "security", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "140d25eedfb10d4b5c8a4c966d55846e8479fe852e1420c2978021477a445bc1", "section_path": ["变更"], "commit_groups": [["0f5838438", "13a67ce60", "2179e6005", "70693c645", "850caae60", "9751f934a", "9b92f115b"]], "identity_text": "Convert newlines to spaces in names included in comments in pg_dump output (Noah Misch) Object names containing newlines offered the ability to inject arbitrary SQL commands into the output script. (Without the preceding fix, injection of psql meta-commands would also be possible this way.) CVE-2012-0868 fixed this class of problem at the time, but later work reintroduced several cases. The PostgreSQL Project thanks Noah Misch for reporting this problem. (CVE-2025-8715)", "commit_aliases": ["0f5838438", "13a67ce60", "2179e6005", "70693c645", "850caae60", "9751f934a", "9b92f115b"], "source_commits": ["0f5838438"], "source_entry_id": "14.19/changes/003", "db_id": "e4409746da14b6ce48dbfc4198028b20", "patch_ids": ["c339acab7d9b8e62f0a32c0c18b2d7e4"], "statement_hash": "cb5a9cc437857a0caf2a82b5b88270031dd431a721fdd8641324b7e28d509258", "relations": [{"rule": 2, "type": "equivalent", "target": "37108a0558c6e7099facfb4c06a2343a", "evidence": {"same_day": true, "patch_ids": ["c339acab7d9b8e62f0a32c0c18b2d7e4"], "statement_hash": "cb5a9cc437857a0caf2a82b5b88270031dd431a721fdd8641324b7e28d509258"}}, {"rule": 2, "type": "equivalent", "target": "38111ed952ef48e4da5272e7c83e8a05", "evidence": {"same_day": true, "patch_ids": ["c339acab7d9b8e62f0a32c0c18b2d7e4"], "statement_hash": "cb5a9cc437857a0caf2a82b5b88270031dd431a721fdd8641324b7e28d509258"}}, {"rule": 2, "type": "equivalent", "target": "88e2718dcf7026885e58101ad68ad92b", "evidence": {"same_day": true, "patch_ids": ["c339acab7d9b8e62f0a32c0c18b2d7e4"], "statement_hash": "cb5a9cc437857a0caf2a82b5b88270031dd431a721fdd8641324b7e28d509258"}}, {"rule": 2, "type": "equivalent", "target": "f51ac36aaada0528abd65e283dc38a35", "evidence": {"same_day": true, "patch_ids": ["c339acab7d9b8e62f0a32c0c18b2d7e4"], "statement_hash": "cb5a9cc437857a0caf2a82b5b88270031dd431a721fdd8641324b7e28d509258"}}], "version": "14.19", "category_label": "安全相关", "also_in": [], "variants": [], "related_changes": [{"db_id": "38111ed952ef48e4da5272e7c83e8a05", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "在 pg_dump 输出的注释中，将名称中包含的换行符转换为空格", "evidence": {"same_day": true, "patch_ids": ["c339acab7d9b8e62f0a32c0c18b2d7e4"], "statement_hash": "cb5a9cc437857a0caf2a82b5b88270031dd431a721fdd8641324b7e28d509258"}, "url": "/docs/compare/?release=17.6#17.6-85269ca5c1610b49", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "f51ac36aaada0528abd65e283dc38a35", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "在 pg_dump 输出的注释中，将名称中包含的换行符转换为空格", "evidence": {"same_day": true, "patch_ids": ["c339acab7d9b8e62f0a32c0c18b2d7e4"], "statement_hash": "cb5a9cc437857a0caf2a82b5b88270031dd431a721fdd8641324b7e28d509258"}, "url": "/docs/compare/?release=16.10#16.10-af4d8aac9b4f8e26", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "37108a0558c6e7099facfb4c06a2343a", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "在 pg_dump 输出的注释中，将名称中包含的换行符转换为空格", "evidence": {"same_day": true, "patch_ids": ["c339acab7d9b8e62f0a32c0c18b2d7e4"], "statement_hash": "cb5a9cc437857a0caf2a82b5b88270031dd431a721fdd8641324b7e28d509258"}, "url": "/docs/compare/?release=15.14#15.14-f808465a0b3d99e8", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "88e2718dcf7026885e58101ad68ad92b", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "在 pg_dump 输出的注释中，将名称中包含的换行符转换为空格", "evidence": {"same_day": true, "patch_ids": ["c339acab7d9b8e62f0a32c0c18b2d7e4"], "statement_hash": "cb5a9cc437857a0caf2a82b5b88270031dd431a721fdd8641324b7e28d509258"}, "url": "/docs/compare/?release=13.22#13.22-a726243ec1d439af", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-40e6c9e0d6dd1f3a", "cves": [], "html": "<p>修复 BRIN <code>numeric_minmax_multi_ops</code> 支持函数中的不正确距离计算（Peter Eisentraut、Tom Lane）<a href=\"https://postgr.es/c/5b0c8e328\">§</a></p>\n<p>在 64 位平台上结果有时是错误的，在 32 位平台上则是严重错误。这不会产生明显的故障，因为该逻辑仅用于选择如何将值合并到范围中；最差情况下索引会变得低效和膨胀。尽管如此，建议重建任何使用 <code>numeric_minmax_multi_ops</code> 操作符类的 BRIN 索引。</p>", "text": "修复 BRIN numeric_minmax_multi_ops 支持函数中的不正确距离计算（Peter Eisentraut、Tom Lane）§ 在 64 位平台上结果有时是错误的，在 32 位平台上则是严重错误。这不会产生明显的故障，因为该逻辑仅用于选择如何将值合并到范围中；最差情况下索引会变得低效和膨胀。尽管如此，建议重建任何使用 numeric_minmax_multi_ops 操作符类的 BRIN 索引。", "title": "修复 BRIN numeric_minmax_multi_ops 支持函数中的不正确距离计算", "commits": ["5b0c8e328"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "74aaef538eb21affa544e34a7634b7e0b34cb08c911ef4f77713f4d294916b14", "section_path": ["变更"], "commit_groups": [["0b0d3c19b", "5b0c8e328", "80c758a2e", "835c9374d", "9b681e239", "b9279058a"]], "identity_text": "Fix incorrect distance calculation in BRIN numeric_minmax_multi_ops support function (Peter Eisentraut, Tom Lane) The results were sometimes wrong on 64-bit platforms, and wildly wrong on 32-bit platforms. This did not produce obvious failures because the logic is only used to choose how to merge values into ranges; at worst the index would become inefficient and bloated. Nonetheless it's recommended to reindex any BRIN indexes that use the numeric_minmax_multi_ops operator class.", "commit_aliases": ["0b0d3c19b", "5b0c8e328", "80c758a2e", "835c9374d", "9b681e239", "b9279058a"], "source_commits": ["5b0c8e328"], "source_entry_id": "14.19/changes/004", "db_id": "ed98f0f159aca0b7bdc8fa7a99199611", "patch_ids": ["f8eb56421d4cc9914bb2a1c211e814b8"], "statement_hash": "bfc6044082058c817cad7f5d0f0fd18b640bc318a5a8faef49e400d017236004", "relations": [{"rule": 2, "type": "equivalent", "target": "2edd3f13435a628aaa0cf85a70b7e21b", "evidence": {"same_day": true, "patch_ids": ["f8eb56421d4cc9914bb2a1c211e814b8"], "statement_hash": "bfc6044082058c817cad7f5d0f0fd18b640bc318a5a8faef49e400d017236004"}}, {"rule": 2, "type": "equivalent", "target": "4f2f50202c0a4062fa0abf4d3a71c14f", "evidence": {"same_day": true, "patch_ids": ["f8eb56421d4cc9914bb2a1c211e814b8"], "statement_hash": "bfc6044082058c817cad7f5d0f0fd18b640bc318a5a8faef49e400d017236004"}}, {"rule": 2, "type": "equivalent", "target": "8d54330390c8ff326f0d15001315337e", "evidence": {"same_day": true, "patch_ids": ["f8eb56421d4cc9914bb2a1c211e814b8"], "statement_hash": "bfc6044082058c817cad7f5d0f0fd18b640bc318a5a8faef49e400d017236004"}}], "version": "14.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "4f2f50202c0a4062fa0abf4d3a71c14f", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "修复 BRIN numeric_minmax_multi_ops 支持函数中的不正确距离计算", "evidence": {"same_day": true, "patch_ids": ["f8eb56421d4cc9914bb2a1c211e814b8"], "statement_hash": "bfc6044082058c817cad7f5d0f0fd18b640bc318a5a8faef49e400d017236004"}, "url": "/docs/compare/?release=17.6#17.6-6264c438a439df10", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "2edd3f13435a628aaa0cf85a70b7e21b", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "修复 BRIN numeric_minmax_multi_ops 支持函数中的不正确距离计算", "evidence": {"same_day": true, "patch_ids": ["f8eb56421d4cc9914bb2a1c211e814b8"], "statement_hash": "bfc6044082058c817cad7f5d0f0fd18b640bc318a5a8faef49e400d017236004"}, "url": "/docs/compare/?release=16.10#16.10-96d739cda1ec7a69", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "8d54330390c8ff326f0d15001315337e", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "修复 BRIN numeric_minmax_multi_ops 支持函数中的不正确距离计算", "evidence": {"same_day": true, "patch_ids": ["f8eb56421d4cc9914bb2a1c211e814b8"], "statement_hash": "bfc6044082058c817cad7f5d0f0fd18b640bc318a5a8faef49e400d017236004"}, "url": "/docs/compare/?release=15.14#15.14-d6dc0de428453b28", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}]}, {"id": "14.19-43d78edde7b0cec8", "cves": [], "html": "<p>避免我们可接受的 XML 输入大小出现退化（Michael Paquier、Erik Wienhold）<a href=\"https://postgr.es/c/0395464af\">§</a> <a href=\"https://postgr.es/c/cdcdabce5\">§</a></p>\n<p>我们针对 <span>libxml2</span> 早期 2.13.x 版本中一个 bug 的变通方案使用了一个会拒绝超过 10MB 文本块的代码路径，而之前的代码不会这样做。那些早期版本在实际环境中大概已经不存在了，因此恢复到之前的代码。</p>", "text": "避免我们可接受的 XML 输入大小出现退化（Michael Paquier、Erik Wienhold）§ § 我们针对 libxml2 早期 2.13.x 版本中一个 bug 的变通方案使用了一个会拒绝超过 10MB 文本块的代码路径，而之前的代码不会这样做。那些早期版本在实际环境中大概已经不存在了，因此恢复到之前的代码。", "title": "避免我们可接受的 XML 输入大小出现退化", "commits": ["0395464af", "cdcdabce5"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "f8b1cbc52655259207ba547db73942fd3e8699e162a409764e713c9516c3771c", "section_path": ["变更"], "commit_groups": [["0395464af", "0ffbd345e", "589d6e640", "637ead2e1", "6d5e493b4", "71c0921b6", "fd4ad33fe"], ["0928e18eb", "0ae824704", "7571e0f6e", "762c6d8d2", "902f92221", "cdcdabce5", "d5f014d89"]], "identity_text": "Avoid regression in the size of XML input that we will accept (Michael Paquier, Erik Wienhold) Our workaround for a bug in early 2.13.x releases of libxml2 made use of a code path that rejects text chunks exceeding 10MB, whereas the previous coding did not. Those early releases are presumably extinct in the wild by now, so revert to the previous coding.", "commit_aliases": ["0395464af", "0928e18eb", "0ae824704", "0ffbd345e", "589d6e640", "637ead2e1", "6d5e493b4", "71c0921b6", "7571e0f6e", "762c6d8d2", "902f92221", "cdcdabce5", "d5f014d89", "fd4ad33fe"], "source_commits": ["0395464af", "cdcdabce5"], "source_entry_id": "14.19/changes/005", "db_id": "0ee6aeae8fc928ce374749037900ae26", "patch_ids": ["98252c90081e7e17af8a98af7237304d", "b287e22af912cdfb881024a69141d1d3"], "statement_hash": "df5a0eec4afc3cc17d7aae1477466e175f12a4b7662a499e03744c30e76fc313", "relations": [{"rule": 2, "type": "equivalent", "target": "1fde207d731da78f7ffa4b41ed55d84f", "evidence": {"same_day": true, "patch_ids": ["98252c90081e7e17af8a98af7237304d", "b287e22af912cdfb881024a69141d1d3"], "statement_hash": "df5a0eec4afc3cc17d7aae1477466e175f12a4b7662a499e03744c30e76fc313"}}, {"rule": 2, "type": "equivalent", "target": "6f0df2f7f9eaa8699c25d67daabf9b0f", "evidence": {"same_day": true, "patch_ids": ["98252c90081e7e17af8a98af7237304d", "b287e22af912cdfb881024a69141d1d3"], "statement_hash": "df5a0eec4afc3cc17d7aae1477466e175f12a4b7662a499e03744c30e76fc313"}}, {"rule": 2, "type": "equivalent", "target": "bb2bd06d13098be6d2f716fc39bcebc1", "evidence": {"same_day": true, "patch_ids": ["98252c90081e7e17af8a98af7237304d", "b287e22af912cdfb881024a69141d1d3"], "statement_hash": "df5a0eec4afc3cc17d7aae1477466e175f12a4b7662a499e03744c30e76fc313"}}, {"rule": 2, "type": "equivalent", "target": "f0095d007a81a7cca2bd060e2fed3b13", "evidence": {"same_day": true, "patch_ids": ["98252c90081e7e17af8a98af7237304d", "b287e22af912cdfb881024a69141d1d3"], "statement_hash": "df5a0eec4afc3cc17d7aae1477466e175f12a4b7662a499e03744c30e76fc313"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "bb2bd06d13098be6d2f716fc39bcebc1", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "避免我们可接受的 XML 输入大小出现退化", "evidence": {"same_day": true, "patch_ids": ["98252c90081e7e17af8a98af7237304d", "b287e22af912cdfb881024a69141d1d3"], "statement_hash": "df5a0eec4afc3cc17d7aae1477466e175f12a4b7662a499e03744c30e76fc313"}, "url": "/docs/compare/?release=17.6#17.6-ce1930917ebddcaa", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "f0095d007a81a7cca2bd060e2fed3b13", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "避免我们可接受的 XML 输入大小出现退化", "evidence": {"same_day": true, "patch_ids": ["98252c90081e7e17af8a98af7237304d", "b287e22af912cdfb881024a69141d1d3"], "statement_hash": "df5a0eec4afc3cc17d7aae1477466e175f12a4b7662a499e03744c30e76fc313"}, "url": "/docs/compare/?release=16.10#16.10-e13cec0f22d647d2", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "6f0df2f7f9eaa8699c25d67daabf9b0f", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "避免我们可接受的 XML 输入大小出现退化", "evidence": {"same_day": true, "patch_ids": ["98252c90081e7e17af8a98af7237304d", "b287e22af912cdfb881024a69141d1d3"], "statement_hash": "df5a0eec4afc3cc17d7aae1477466e175f12a4b7662a499e03744c30e76fc313"}, "url": "/docs/compare/?release=15.14#15.14-e693a8762746a5b1", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "1fde207d731da78f7ffa4b41ed55d84f", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "避免我们可接受的 XML 输入大小出现退化", "evidence": {"same_day": true, "patch_ids": ["98252c90081e7e17af8a98af7237304d", "b287e22af912cdfb881024a69141d1d3"], "statement_hash": "df5a0eec4afc3cc17d7aae1477466e175f12a4b7662a499e03744c30e76fc313"}, "url": "/docs/compare/?release=13.22#13.22-66f9371c0bdfa68c", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-feec18122edb5081", "cves": [], "html": "<p>允许具有语句级触发器的表成为分区或继承子表（Etsuro Fujita）<a href=\"https://postgr.es/c/73eb6afa1\">§</a></p>\n<p>我们不允许分区或继承子表拥有带有转换表的行级触发器，因为对整个继承树的操作需要为每个这样的子表维护单独的转换表。但这个问题不适用于语句级触发器，因为只有父表的语句级触发器会被触发。检查现有表是否可以成为分区或继承子表的代码却错误地拒绝了两种触发器。</p>", "text": "允许具有语句级触发器的表成为分区或继承子表（Etsuro Fujita）§ 我们不允许分区或继承子表拥有带有转换表的行级触发器，因为对整个继承树的操作需要为每个这样的子表维护单独的转换表。但这个问题不适用于语句级触发器，因为只有父表的语句级触发器会被触发。检查现有表是否可以成为分区或继承子表的代码却错误地拒绝了两种触发器。", "title": "允许具有语句级触发器的表成为分区或继承子表", "commits": ["73eb6afa1"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "3eb423fb915e0eda84803b4840601ef46373bc272e28c9c98f78d7c047560bfe", "section_path": ["变更"], "commit_groups": [["3863c6fb6", "73eb6afa1", "9e63f83a7", "afdb4cde1", "bba6a6faf", "e028ce911", "f39a7f32a"]], "identity_text": "Allow tables with statement-level triggers to become partitions or inheritance children (Etsuro Fujita) We do not allow partitions or inheritance child tables to have row-level triggers with transition tables, because an operation on the whole inheritance tree would need to maintain a separate transition table for each such child table. But that problem does not apply for statement-level triggers, because only the parent's statement-level triggers will be fired. The code that checks whether an existing table can become a partition or inheritance child nonetheless rejected both kinds of trigger.", "commit_aliases": ["3863c6fb6", "73eb6afa1", "9e63f83a7", "afdb4cde1", "bba6a6faf", "e028ce911", "f39a7f32a"], "source_commits": ["73eb6afa1"], "source_entry_id": "14.19/changes/006", "db_id": "9c539692e1ae384a68ec089b701c3ae5", "patch_ids": ["ec5be3f8bfa509ddb1d8966ad9ecc1af"], "statement_hash": "0082e9e8b3fbe6a713df8db4021468ed4e0c645dd447c14f56a9e72d025dff7f", "relations": [{"rule": 2, "type": "equivalent", "target": "420807e2c65cfb2f35b9d98ab03fd35a", "evidence": {"same_day": true, "patch_ids": ["ec5be3f8bfa509ddb1d8966ad9ecc1af"], "statement_hash": "0082e9e8b3fbe6a713df8db4021468ed4e0c645dd447c14f56a9e72d025dff7f"}}, {"rule": 2, "type": "equivalent", "target": "46c9c9414aeb1e1d548fe9e14dd2586c", "evidence": {"same_day": true, "patch_ids": ["ec5be3f8bfa509ddb1d8966ad9ecc1af"], "statement_hash": "0082e9e8b3fbe6a713df8db4021468ed4e0c645dd447c14f56a9e72d025dff7f"}}, {"rule": 2, "type": "equivalent", "target": "aca9c17a807140f57d39cd64e3b60dcd", "evidence": {"same_day": true, "patch_ids": ["ec5be3f8bfa509ddb1d8966ad9ecc1af"], "statement_hash": "0082e9e8b3fbe6a713df8db4021468ed4e0c645dd447c14f56a9e72d025dff7f"}}, {"rule": 2, "type": "equivalent", "target": "f5801d51a971cf08cdb8c06a0637d94e", "evidence": {"same_day": true, "patch_ids": ["ec5be3f8bfa509ddb1d8966ad9ecc1af"], "statement_hash": "0082e9e8b3fbe6a713df8db4021468ed4e0c645dd447c14f56a9e72d025dff7f"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "f5801d51a971cf08cdb8c06a0637d94e", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "允许具有语句级触发器的表成为分区或继承子表", "evidence": {"same_day": true, "patch_ids": ["ec5be3f8bfa509ddb1d8966ad9ecc1af"], "statement_hash": "0082e9e8b3fbe6a713df8db4021468ed4e0c645dd447c14f56a9e72d025dff7f"}, "url": "/docs/compare/?release=17.6#17.6-01c44484fb8c7777", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "46c9c9414aeb1e1d548fe9e14dd2586c", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "允许具有语句级触发器的表成为分区或继承子表", "evidence": {"same_day": true, "patch_ids": ["ec5be3f8bfa509ddb1d8966ad9ecc1af"], "statement_hash": "0082e9e8b3fbe6a713df8db4021468ed4e0c645dd447c14f56a9e72d025dff7f"}, "url": "/docs/compare/?release=16.10#16.10-b7b247e33c4791f3", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "420807e2c65cfb2f35b9d98ab03fd35a", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "允许具有语句级触发器的表成为分区或继承子表", "evidence": {"same_day": true, "patch_ids": ["ec5be3f8bfa509ddb1d8966ad9ecc1af"], "statement_hash": "0082e9e8b3fbe6a713df8db4021468ed4e0c645dd447c14f56a9e72d025dff7f"}, "url": "/docs/compare/?release=15.14#15.14-607bfb1bab951bc7", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "aca9c17a807140f57d39cd64e3b60dcd", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "允许具有语句级触发器的表成为分区或继承子表", "evidence": {"same_day": true, "patch_ids": ["ec5be3f8bfa509ddb1d8966ad9ecc1af"], "statement_hash": "0082e9e8b3fbe6a713df8db4021468ed4e0c645dd447c14f56a9e72d025dff7f"}, "url": "/docs/compare/?release=13.22#13.22-df71954a5ef41ef1", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-1ab1051a32528a44", "cves": [], "html": "<p>禁止从外部子表收集转换元组（Etsuro Fujita）<a href=\"https://postgr.es/c/e94fc1a8a\">§</a></p>\n<p>我们不支持在外部表上使用带有转换表的触发器。但是，分区或继承子表是外部表的情况被忽略了。如果父表有这样的触发器，就会从外部子表收集到不正确的转换元组。现在改为抛出错误，报告该情况不被支持。</p>", "text": "禁止从外部子表收集转换元组（Etsuro Fujita）§ 我们不支持在外部表上使用带有转换表的触发器。但是，分区或继承子表是外部表的情况被忽略了。如果父表有这样的触发器，就会从外部子表收集到不正确的转换元组。现在改为抛出错误，报告该情况不被支持。", "title": "禁止从外部子表收集转换元组", "commits": ["e94fc1a8a"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "9aace95ba8151a68aba0566ed1586d33b9fc554006670ae78ed81a624925868f", "section_path": ["变更"], "commit_groups": [["62a1211d3", "9048a83c7", "9cca445df", "b6641f7b0", "ce8817022", "d642d2306", "e94fc1a8a"]], "identity_text": "Disallow collecting transition tuples from child foreign tables (Etsuro Fujita) We do not support triggers with transition tables on foreign tables. However, the case of a partition or inheritance child that is a foreign table was overlooked. If the parent has such a trigger, incorrect transition tuples were collected from the foreign child. Instead throw an error, reporting that the case is not supported.", "commit_aliases": ["62a1211d3", "9048a83c7", "9cca445df", "b6641f7b0", "ce8817022", "d642d2306", "e94fc1a8a"], "source_commits": ["e94fc1a8a"], "source_entry_id": "14.19/changes/007", "db_id": "d139e318081b10609507f4cac88f0f8a", "patch_ids": ["5a0b704f17af1d8b1003c9b05f2986c2"], "statement_hash": "656e8175e4a93a3a0588bc41f2185d223eea6d7b2a2104d8226412e279416f63", "relations": [{"rule": 2, "type": "equivalent", "target": "2979e7070342fffc5ad3b796f44b4bc6", "evidence": {"same_day": true, "patch_ids": ["5a0b704f17af1d8b1003c9b05f2986c2"], "statement_hash": "656e8175e4a93a3a0588bc41f2185d223eea6d7b2a2104d8226412e279416f63"}}, {"rule": 2, "type": "equivalent", "target": "a1e77a42db5570cb12c20d1010246a22", "evidence": {"same_day": true, "patch_ids": ["5a0b704f17af1d8b1003c9b05f2986c2"], "statement_hash": "656e8175e4a93a3a0588bc41f2185d223eea6d7b2a2104d8226412e279416f63"}}, {"rule": 2, "type": "equivalent", "target": "a92bdec02c5cc11013deebd80c74b0eb", "evidence": {"same_day": true, "patch_ids": ["5a0b704f17af1d8b1003c9b05f2986c2"], "statement_hash": "656e8175e4a93a3a0588bc41f2185d223eea6d7b2a2104d8226412e279416f63"}}, {"rule": 2, "type": "equivalent", "target": "ab769326d638153e0ea7ef5f3a2dcb49", "evidence": {"same_day": true, "patch_ids": ["5a0b704f17af1d8b1003c9b05f2986c2"], "statement_hash": "656e8175e4a93a3a0588bc41f2185d223eea6d7b2a2104d8226412e279416f63"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "a92bdec02c5cc11013deebd80c74b0eb", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "禁止从外部子表收集转换元组", "evidence": {"same_day": true, "patch_ids": ["5a0b704f17af1d8b1003c9b05f2986c2"], "statement_hash": "656e8175e4a93a3a0588bc41f2185d223eea6d7b2a2104d8226412e279416f63"}, "url": "/docs/compare/?release=17.6#17.6-271f6d5d0c5205b8", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "ab769326d638153e0ea7ef5f3a2dcb49", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "禁止从外部子表收集转换元组", "evidence": {"same_day": true, "patch_ids": ["5a0b704f17af1d8b1003c9b05f2986c2"], "statement_hash": "656e8175e4a93a3a0588bc41f2185d223eea6d7b2a2104d8226412e279416f63"}, "url": "/docs/compare/?release=16.10#16.10-17bba33bfae8d9d4", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "a1e77a42db5570cb12c20d1010246a22", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "禁止从外部子表收集转换元组", "evidence": {"same_day": true, "patch_ids": ["5a0b704f17af1d8b1003c9b05f2986c2"], "statement_hash": "656e8175e4a93a3a0588bc41f2185d223eea6d7b2a2104d8226412e279416f63"}, "url": "/docs/compare/?release=15.14#15.14-f019be1c276e12ad", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "2979e7070342fffc5ad3b796f44b4bc6", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "禁止从外部子表收集转换元组", "evidence": {"same_day": true, "patch_ids": ["5a0b704f17af1d8b1003c9b05f2986c2"], "statement_hash": "656e8175e4a93a3a0588bc41f2185d223eea6d7b2a2104d8226412e279416f63"}, "url": "/docs/compare/?release=13.22#13.22-81ac4c617cec1e50", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-47bd9af427539628", "cves": [], "html": "<p>修复 <code>ALTER SUBSCRIPTION ... DROP PUBLICATION</code> 期间的潜在死锁问题（Ajin Cherian）<a href=\"https://postgr.es/c/41fb3f51c\">§</a></p>\n<p>确保服务器进程在复制源删除期间以一致的顺序获取系统目录锁。</p>", "text": "修复 ALTER SUBSCRIPTION ... DROP PUBLICATION 期间的潜在死锁问题（Ajin Cherian）§ 确保服务器进程在复制源删除期间以一致的顺序获取系统目录锁。", "title": "修复 ALTER SUBSCRIPTION ... DROP PUBLICATION 期间的潜在死锁问题", "commits": ["41fb3f51c"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "72c5796144226531b08fd9fa2dfaaafe72d1c596c76c311a31cf8ac9ca5860bc", "section_path": ["变更"], "commit_groups": [["2ab2d6f97", "41fb3f51c", "434d2d147", "8c298324a", "adfd80219", "d9f01a287"]], "identity_text": "Fix a potential deadlock during ALTER SUBSCRIPTION ... DROP PUBLICATION (Ajin Cherian) Ensure that server processes acquire catalog locks in a consistent order during replication origin drops.", "commit_aliases": ["2ab2d6f97", "41fb3f51c", "434d2d147", "8c298324a", "adfd80219", "d9f01a287"], "source_commits": ["41fb3f51c"], "source_entry_id": "14.19/changes/008", "db_id": "4f811c946e4b4a6a82a76490865d47b6", "patch_ids": ["143bab990487b546b1c946801959bb56"], "statement_hash": "50f73d9f0f29f1a2f239e34133545b82b3517495807dae45806b36358c6eb934", "relations": [{"rule": 2, "type": "equivalent", "target": "119e92e0c7e4ba7b3831fe250dba85c1", "evidence": {"same_day": true, "patch_ids": ["143bab990487b546b1c946801959bb56"], "statement_hash": "50f73d9f0f29f1a2f239e34133545b82b3517495807dae45806b36358c6eb934"}}, {"rule": 2, "type": "equivalent", "target": "18c5f105597d23e166fd08e03cf49656", "evidence": {"same_day": true, "patch_ids": ["143bab990487b546b1c946801959bb56"], "statement_hash": "50f73d9f0f29f1a2f239e34133545b82b3517495807dae45806b36358c6eb934"}}, {"rule": 2, "type": "equivalent", "target": "1de0d029ccf2648086aaccf4f49f5ddc", "evidence": {"same_day": true, "patch_ids": ["143bab990487b546b1c946801959bb56"], "statement_hash": "50f73d9f0f29f1a2f239e34133545b82b3517495807dae45806b36358c6eb934"}}], "version": "14.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "18c5f105597d23e166fd08e03cf49656", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "修复 ALTER SUBSCRIPTION ... DROP PUBLICATION 期间的潜在死锁问题", "evidence": {"same_day": true, "patch_ids": ["143bab990487b546b1c946801959bb56"], "statement_hash": "50f73d9f0f29f1a2f239e34133545b82b3517495807dae45806b36358c6eb934"}, "url": "/docs/compare/?release=17.6#17.6-9c7e461e56dfefe9", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "119e92e0c7e4ba7b3831fe250dba85c1", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "修复 ALTER SUBSCRIPTION ... DROP PUBLICATION 期间的潜在死锁问题", "evidence": {"same_day": true, "patch_ids": ["143bab990487b546b1c946801959bb56"], "statement_hash": "50f73d9f0f29f1a2f239e34133545b82b3517495807dae45806b36358c6eb934"}, "url": "/docs/compare/?release=16.10#16.10-9015eff1dde180a1", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "1de0d029ccf2648086aaccf4f49f5ddc", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "修复 ALTER SUBSCRIPTION ... DROP PUBLICATION 期间的潜在死锁问题", "evidence": {"same_day": true, "patch_ids": ["143bab990487b546b1c946801959bb56"], "statement_hash": "50f73d9f0f29f1a2f239e34133545b82b3517495807dae45806b36358c6eb934"}, "url": "/docs/compare/?release=15.14#15.14-37fb0e0ef6a2eeea", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}]}, {"id": "14.19-13e24172d846d026", "cves": [], "html": "<p>缩短创建名称冲突索引时的竞争窗口（Tom Lane）<a href=\"https://postgr.es/c/fdd826922\">§</a></p>\n<p>在为索引选择自动生成的名称时，除了完全有效的 <code>pg_class</code> 行之外，也要避免与尚未提交的 <code>pg_class</code> 行发生冲突。这样可以避免在并发 <code>CREATE INDEX</code> 尚处于填充索引过程中，或虽已完成但其事务尚未提交时，意外选中同一个名称。虽然仍然存在一个出问题的窗口，但其长度仅限于验证新索引参数并插入其 <code>pg_class</code> 行所需的时间。</p>", "text": "缩短创建名称冲突索引时的竞争窗口（Tom Lane）§ 在为索引选择自动生成的名称时，除了完全有效的 pg_class 行之外，也要避免与尚未提交的 pg_class 行发生冲突。这样可以避免在并发 CREATE INDEX 尚处于填充索引过程中，或虽已完成但其事务尚未提交时，意外选中同一个名称。虽然仍然存在一个出问题的窗口，但其长度仅限于验证新索引参数并插入其 pg_class 行所需的时间。", "title": "缩短创建名称冲突索引时的竞争窗口", "commits": ["fdd826922"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "3e207584f38749a92ff2adac7320ab77b4bb2cae272cc096a29c20bbf1531d6c", "section_path": ["变更"], "commit_groups": [["1e24ea160", "27af8b9be", "4b66cb188", "5861b1f34", "75b8982ea", "fdd826922"]], "identity_text": "Shorten the race condition window for creating indexes with conflicting names (Tom Lane) When choosing an auto-generated name for an index, avoid conflicting with not-yet-committed pg_class rows as well as fully-valid ones. This avoids possibly choosing the same name as some concurrent CREATE INDEX did, when that command is still in process of filling its index, or is done but is part of a not-yet-committed transaction. There's still a window for trouble, but it's only as long as the time needed to validate a new index's parameters and insert its pg_class row.", "commit_aliases": ["1e24ea160", "27af8b9be", "4b66cb188", "5861b1f34", "75b8982ea", "fdd826922"], "source_commits": ["27af8b9be"], "source_entry_id": "14.19/changes/009", "db_id": "ab7bccea8d6855f4ce69007761547ea1", "patch_ids": ["2cde05c697d356cd94160428f5996978"], "statement_hash": "9d8fb46e629b5f87f3921e5d3d876a1bec4056a60db5555a371048886cabedee", "relations": [{"rule": 2, "type": "equivalent", "target": "c0d512394b274df9bf04bfd9da19ad9d", "evidence": {"same_day": true, "patch_ids": ["2cde05c697d356cd94160428f5996978"], "statement_hash": "9d8fb46e629b5f87f3921e5d3d876a1bec4056a60db5555a371048886cabedee"}}, {"rule": 2, "type": "equivalent", "target": "cc9ada49012779be8d6c2ce519b277b2", "evidence": {"same_day": true, "patch_ids": ["2cde05c697d356cd94160428f5996978"], "statement_hash": "9d8fb46e629b5f87f3921e5d3d876a1bec4056a60db5555a371048886cabedee"}}, {"rule": 2, "type": "equivalent", "target": "cd9bf467acac56d692dda4c78b6520b4", "evidence": {"same_day": true, "patch_ids": ["2cde05c697d356cd94160428f5996978"], "statement_hash": "9d8fb46e629b5f87f3921e5d3d876a1bec4056a60db5555a371048886cabedee"}}, {"rule": 2, "type": "equivalent", "target": "f009510291116b6b85412f3abd7c71fe", "evidence": {"same_day": true, "patch_ids": ["2cde05c697d356cd94160428f5996978"], "statement_hash": "9d8fb46e629b5f87f3921e5d3d876a1bec4056a60db5555a371048886cabedee"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "cd9bf467acac56d692dda4c78b6520b4", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "缩短创建名称冲突索引时的竞争窗口", "evidence": {"same_day": true, "patch_ids": ["2cde05c697d356cd94160428f5996978"], "statement_hash": "9d8fb46e629b5f87f3921e5d3d876a1bec4056a60db5555a371048886cabedee"}, "url": "/docs/compare/?release=17.6#17.6-13e24172d846d026", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "cc9ada49012779be8d6c2ce519b277b2", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "缩短创建名称冲突索引时的竞争窗口", "evidence": {"same_day": true, "patch_ids": ["2cde05c697d356cd94160428f5996978"], "statement_hash": "9d8fb46e629b5f87f3921e5d3d876a1bec4056a60db5555a371048886cabedee"}, "url": "/docs/compare/?release=16.10#16.10-13e24172d846d026", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "c0d512394b274df9bf04bfd9da19ad9d", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "缩短创建名称冲突索引时的竞争窗口", "evidence": {"same_day": true, "patch_ids": ["2cde05c697d356cd94160428f5996978"], "statement_hash": "9d8fb46e629b5f87f3921e5d3d876a1bec4056a60db5555a371048886cabedee"}, "url": "/docs/compare/?release=15.14#15.14-13e24172d846d026", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "f009510291116b6b85412f3abd7c71fe", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "缩短创建名称冲突索引时的竞态条件窗口", "evidence": {"same_day": true, "patch_ids": ["2cde05c697d356cd94160428f5996978"], "statement_hash": "9d8fb46e629b5f87f3921e5d3d876a1bec4056a60db5555a371048886cabedee"}, "url": "/docs/compare/?release=13.22#13.22-e58fa3a296a9867e", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-53071ce6125d0b28", "cves": [], "html": "<p>防止在单条命令对多个表执行 <code>VACUUM</code> 的某些情况下使用错误的选项（Nathan Bossart, Michael Paquier）<a href=\"https://postgr.es/c/2e0b5d252\">§</a></p>\n<p>一个表的 <code>TRUNCATE</code> 和 <code>INDEX_CLEANUP</code> 选项可能会被错误地应用到其他表上。</p>", "text": "防止在单条命令对多个表执行 VACUUM 的某些情况下使用错误的选项（Nathan Bossart, Michael Paquier）§ 一个表的 TRUNCATE 和 INDEX_CLEANUP 选项可能会被错误地应用到其他表上。", "title": "防止在单条命令对多个表执行 VACUUM 的某些情况下使用错误的选项", "commits": ["2e0b5d252"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "8cd381edc9205b31cf499de1a9b2bad48a0d0365b880bfc504b33caec3d0a546", "section_path": ["变更"], "commit_groups": [["2e0b5d252", "354944663", "65c3223f9", "661643ded", "c079ba3fc", "d187cabdd"]], "identity_text": "Prevent usage of incorrect VACUUM options in some cases where multiple tables are vacuumed in a single command (Nathan Bossart, Michael Paquier) The TRUNCATE and INDEX_CLEANUP options of one table could be applied to others.", "commit_aliases": ["2e0b5d252", "354944663", "65c3223f9", "661643ded", "c079ba3fc", "d187cabdd"], "source_commits": ["c079ba3fc"], "source_entry_id": "14.19/changes/010", "db_id": "f54d5a0a16b92edc7834ea5a03a30e6e", "patch_ids": ["89160decf2f9b4ff941c601bacb53a69"], "statement_hash": "dbb02fd010417aaa3fa88b73610b44e468c90b166303d31fd87eaca0018dd9ac", "relations": [{"rule": 2, "type": "equivalent", "target": "2316d4e1293dd02f9da65a733b9c5284", "evidence": {"same_day": true, "patch_ids": ["89160decf2f9b4ff941c601bacb53a69"], "statement_hash": "dbb02fd010417aaa3fa88b73610b44e468c90b166303d31fd87eaca0018dd9ac"}}, {"rule": 2, "type": "equivalent", "target": "39112b1e33c7d8f3e1c20acc518d1534", "evidence": {"same_day": true, "patch_ids": ["89160decf2f9b4ff941c601bacb53a69"], "statement_hash": "dbb02fd010417aaa3fa88b73610b44e468c90b166303d31fd87eaca0018dd9ac"}}, {"rule": 2, "type": "equivalent", "target": "48bd41b12ed5efc22b115d00c6f39ca1", "evidence": {"same_day": true, "patch_ids": ["89160decf2f9b4ff941c601bacb53a69"], "statement_hash": "dbb02fd010417aaa3fa88b73610b44e468c90b166303d31fd87eaca0018dd9ac"}}, {"rule": 2, "type": "equivalent", "target": "93384131d3e1a70d7b023dfbbcdf7b8d", "evidence": {"same_day": true, "patch_ids": ["89160decf2f9b4ff941c601bacb53a69"], "statement_hash": "dbb02fd010417aaa3fa88b73610b44e468c90b166303d31fd87eaca0018dd9ac"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "2316d4e1293dd02f9da65a733b9c5284", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "防止在单条命令对多个表执行 VACUUM 的某些情况下使用错误的选项", "evidence": {"same_day": true, "patch_ids": ["89160decf2f9b4ff941c601bacb53a69"], "statement_hash": "dbb02fd010417aaa3fa88b73610b44e468c90b166303d31fd87eaca0018dd9ac"}, "url": "/docs/compare/?release=17.6#17.6-53071ce6125d0b28", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "39112b1e33c7d8f3e1c20acc518d1534", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "防止在单条命令对多个表执行 VACUUM 的某些情况下使用错误的选项", "evidence": {"same_day": true, "patch_ids": ["89160decf2f9b4ff941c601bacb53a69"], "statement_hash": "dbb02fd010417aaa3fa88b73610b44e468c90b166303d31fd87eaca0018dd9ac"}, "url": "/docs/compare/?release=16.10#16.10-53071ce6125d0b28", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "93384131d3e1a70d7b023dfbbcdf7b8d", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "防止在单条命令对多个表执行 VACUUM 的某些情况下使用错误的选项", "evidence": {"same_day": true, "patch_ids": ["89160decf2f9b4ff941c601bacb53a69"], "statement_hash": "dbb02fd010417aaa3fa88b73610b44e468c90b166303d31fd87eaca0018dd9ac"}, "url": "/docs/compare/?release=15.14#15.14-53071ce6125d0b28", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "48bd41b12ed5efc22b115d00c6f39ca1", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "防止在单个命令中对多个表执行 vacuum 时使用不正确的 VACUUM 选项", "evidence": {"same_day": true, "patch_ids": ["89160decf2f9b4ff941c601bacb53a69"], "statement_hash": "dbb02fd010417aaa3fa88b73610b44e468c90b166303d31fd87eaca0018dd9ac"}, "url": "/docs/compare/?release=13.22#13.22-d570c9d303f43874", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-483f40f2905262cc", "cves": [], "html": "<p>修复 <code>SIMILAR TO</code> 正则表达式中字符类的处理问题（Laurenz Albe）<a href=\"https://postgr.es/c/e3ffc3e91\">§</a> <a href=\"https://postgr.es/c/a3c6d92f3\">§</a></p>\n<p>将 <code>SIMILAR TO</code> 模式匹配表达式转换为 POSIX 风格正则表达式的代码，没有考虑到方括号可以嵌套。例如，在 <code>[[:alpha:]%_]</code> 这样的模式中，代码把 <code>%</code> 和 <code>_</code> 字符当成了元字符，但它们本应是字面量。</p>", "text": "修复 SIMILAR TO 正则表达式中字符类的处理问题（Laurenz Albe）§ § 将 SIMILAR TO 模式匹配表达式转换为 POSIX 风格正则表达式的代码，没有考虑到方括号可以嵌套。例如，在 [[:alpha:]%_] 这样的模式中，代码把 % 和 _ 字符当成了元字符，但它们本应是字面量。", "title": "修复 SIMILAR TO 正则表达式中字符类的处理问题", "commits": ["a3c6d92f3", "e3ffc3e91"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "f7550a4a572ba0aa373526997a38589c37975c2b960883f58905e10b0ecdcba0", "section_path": ["变更"], "commit_groups": [["0c09922c0", "31ee5ec69", "4dc642e75", "4fbb46f61", "52d08620e", "a3c6d92f3"], ["1fe15d25e", "9481d1614", "b3e99115e", "d46911e58", "e3ffc3e91", "e9e535d61"]], "identity_text": "Fix processing of character classes within SIMILAR TO regular expressions (Laurenz Albe) The code that translates SIMILAR TO pattern matching expressions to POSIX-style regular expressions did not consider that square brackets can be nested. For example, in a pattern like [[:alpha:]%_], the code treated the % and _ characters as metacharacters when they should be literals.", "commit_aliases": ["0c09922c0", "1fe15d25e", "31ee5ec69", "4dc642e75", "4fbb46f61", "52d08620e", "9481d1614", "a3c6d92f3", "b3e99115e", "d46911e58", "e3ffc3e91", "e9e535d61"], "source_commits": ["0c09922c0", "1fe15d25e"], "source_entry_id": "14.19/changes/011", "db_id": "2f858ffaa73f46878766a2a34c5cadfd", "patch_ids": ["298d1aa172772ad302c04c8ff71f16fc", "cd82c8ae60471aa4ec59ca3150bed1ad"], "statement_hash": "f7c19d4e4f39822c237f50cb49b0eb8e2fceb4ba460e6320d29d82c7b8dbf2fa", "relations": [{"rule": 2, "type": "equivalent", "target": "0140aef3f5703251ce4a930f0fd1f18d", "evidence": {"same_day": true, "patch_ids": ["298d1aa172772ad302c04c8ff71f16fc", "cd82c8ae60471aa4ec59ca3150bed1ad"], "statement_hash": "f7c19d4e4f39822c237f50cb49b0eb8e2fceb4ba460e6320d29d82c7b8dbf2fa"}}, {"rule": 2, "type": "equivalent", "target": "592154b7d54dfa17fa5b9fd969e5793b", "evidence": {"same_day": true, "patch_ids": ["298d1aa172772ad302c04c8ff71f16fc", "cd82c8ae60471aa4ec59ca3150bed1ad"], "statement_hash": "f7c19d4e4f39822c237f50cb49b0eb8e2fceb4ba460e6320d29d82c7b8dbf2fa"}}, {"rule": 2, "type": "equivalent", "target": "b16bc663426f7e15fd04323e4fd5c4e7", "evidence": {"same_day": true, "patch_ids": ["298d1aa172772ad302c04c8ff71f16fc", "cd82c8ae60471aa4ec59ca3150bed1ad"], "statement_hash": "f7c19d4e4f39822c237f50cb49b0eb8e2fceb4ba460e6320d29d82c7b8dbf2fa"}}, {"rule": 2, "type": "equivalent", "target": "b3faaedb199ce89968436f1d12b6232f", "evidence": {"same_day": true, "patch_ids": ["298d1aa172772ad302c04c8ff71f16fc", "cd82c8ae60471aa4ec59ca3150bed1ad"], "statement_hash": "f7c19d4e4f39822c237f50cb49b0eb8e2fceb4ba460e6320d29d82c7b8dbf2fa"}}], "version": "14.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "592154b7d54dfa17fa5b9fd969e5793b", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "修复 SIMILAR TO 正则表达式中字符类的处理问题", "evidence": {"same_day": true, "patch_ids": ["298d1aa172772ad302c04c8ff71f16fc", "cd82c8ae60471aa4ec59ca3150bed1ad"], "statement_hash": "f7c19d4e4f39822c237f50cb49b0eb8e2fceb4ba460e6320d29d82c7b8dbf2fa"}, "url": "/docs/compare/?release=17.6#17.6-483f40f2905262cc", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "b16bc663426f7e15fd04323e4fd5c4e7", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "修复 SIMILAR TO 正则表达式中字符类的处理问题", "evidence": {"same_day": true, "patch_ids": ["298d1aa172772ad302c04c8ff71f16fc", "cd82c8ae60471aa4ec59ca3150bed1ad"], "statement_hash": "f7c19d4e4f39822c237f50cb49b0eb8e2fceb4ba460e6320d29d82c7b8dbf2fa"}, "url": "/docs/compare/?release=16.10#16.10-483f40f2905262cc", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "0140aef3f5703251ce4a930f0fd1f18d", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "修复 SIMILAR TO 正则表达式中字符类的处理问题", "evidence": {"same_day": true, "patch_ids": ["298d1aa172772ad302c04c8ff71f16fc", "cd82c8ae60471aa4ec59ca3150bed1ad"], "statement_hash": "f7c19d4e4f39822c237f50cb49b0eb8e2fceb4ba460e6320d29d82c7b8dbf2fa"}, "url": "/docs/compare/?release=15.14#15.14-483f40f2905262cc", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "b3faaedb199ce89968436f1d12b6232f", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "修复 SIMILAR TO 正则表达式中字符类的处理", "evidence": {"same_day": true, "patch_ids": ["298d1aa172772ad302c04c8ff71f16fc", "cd82c8ae60471aa4ec59ca3150bed1ad"], "statement_hash": "f7c19d4e4f39822c237f50cb49b0eb8e2fceb4ba460e6320d29d82c7b8dbf2fa"}, "url": "/docs/compare/?release=13.22#13.22-b8173bf68157bc91", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-6c61789bdaa33b27", "cves": [], "html": "<p>在反解析查询时，始终在 <code>FETCH FIRST <em><code>expression</code></em> ROWS WITH TIES</code> 子句中的表达式周围添加括号（Heikki Linnakangas）<a href=\"https://postgr.es/c/0420b24fe\">§</a></p>\n<p>这避免了某些反解析结果在语法上无效的情况。</p>", "text": "在反解析查询时，始终在 FETCH FIRST expression ROWS WITH TIES 子句中的表达式周围添加括号（Heikki Linnakangas）§ 这避免了某些反解析结果在语法上无效的情况。", "title": "在反解析查询时，始终在 FETCH FIRST expression ROWS WITH TIES 子句中的表达式周围添加括号", "commits": ["0420b24fe"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "827db9ea116dfd2ee32ca7bf38d8db9af85bee5071fc48be61f0bc42c3dce45b", "section_path": ["变更"], "commit_groups": [["0420b24fe", "29f7ce6fe", "54c05292b", "72fe74ca5", "7ee00918f", "92a9ba3b9"], ["558ea446a", "a4da7b0cf", "cbf53e2b8"]], "identity_text": "When deparsing queries, always add parentheses around the expression in FETCH FIRST expression ROWS WITH TIES clauses (Heikki Linnakangas) This avoids some cases where the deparsed result wasn't syntactically valid.", "commit_aliases": ["0420b24fe", "29f7ce6fe", "54c05292b", "558ea446a", "72fe74ca5", "7ee00918f", "92a9ba3b9", "a4da7b0cf", "cbf53e2b8"], "source_commits": ["0420b24fe", "cbf53e2b8"], "source_entry_id": "14.19/changes/012", "db_id": "ac2730f6a1011c38915f3f51fed5e23c", "patch_ids": ["da6a24d2406b7c97b728c6ff62b21709", "e2f0940f582bbc106392b2bf98063cbb"], "statement_hash": "5e5ec36a3cf13bab1d54c4a81ac7e4e242aa243fade253713675c900924b1f0b", "relations": [{"rule": 2, "type": "equivalent", "target": "2c53c54fdf068bc21cac5e41d449e779", "evidence": {"same_day": true, "patch_ids": ["da6a24d2406b7c97b728c6ff62b21709", "e2f0940f582bbc106392b2bf98063cbb"], "statement_hash": "5e5ec36a3cf13bab1d54c4a81ac7e4e242aa243fade253713675c900924b1f0b"}}, {"rule": 2, "type": "equivalent", "target": "4cbd753646a1fc3438685a6ec808ae57", "evidence": {"same_day": true, "patch_ids": ["da6a24d2406b7c97b728c6ff62b21709", "e2f0940f582bbc106392b2bf98063cbb"], "statement_hash": "5e5ec36a3cf13bab1d54c4a81ac7e4e242aa243fade253713675c900924b1f0b"}}, {"rule": 2, "type": "equivalent", "target": "c700983864cc9535ad4ffcda69d8552b", "evidence": {"same_day": true, "patch_ids": ["da6a24d2406b7c97b728c6ff62b21709", "e2f0940f582bbc106392b2bf98063cbb"], "statement_hash": "5e5ec36a3cf13bab1d54c4a81ac7e4e242aa243fade253713675c900924b1f0b"}}, {"rule": 2, "type": "equivalent", "target": "cd001a18add755b7d0ccbcd5d91d460a", "evidence": {"same_day": true, "patch_ids": ["da6a24d2406b7c97b728c6ff62b21709", "e2f0940f582bbc106392b2bf98063cbb"], "statement_hash": "5e5ec36a3cf13bab1d54c4a81ac7e4e242aa243fade253713675c900924b1f0b"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "cd001a18add755b7d0ccbcd5d91d460a", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "在反解析查询时，始终为 FETCH FIRST expression ROWS WITH TIES 子句中的表达式加上括号", "evidence": {"same_day": true, "patch_ids": ["da6a24d2406b7c97b728c6ff62b21709", "e2f0940f582bbc106392b2bf98063cbb"], "statement_hash": "5e5ec36a3cf13bab1d54c4a81ac7e4e242aa243fade253713675c900924b1f0b"}, "url": "/docs/compare/?release=17.6#17.6-b5721ac2f2e16db7", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "4cbd753646a1fc3438685a6ec808ae57", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "在反解析查询时，始终为 FETCH FIRST expression ROWS WITH TIES 子句中的表达式加上括号", "evidence": {"same_day": true, "patch_ids": ["da6a24d2406b7c97b728c6ff62b21709", "e2f0940f582bbc106392b2bf98063cbb"], "statement_hash": "5e5ec36a3cf13bab1d54c4a81ac7e4e242aa243fade253713675c900924b1f0b"}, "url": "/docs/compare/?release=16.10#16.10-b5721ac2f2e16db7", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "c700983864cc9535ad4ffcda69d8552b", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "在反解析查询时，始终在 FETCH FIRST expression ROWS WITH TIES 子句中的表达式周围添加括号", "evidence": {"same_day": true, "patch_ids": ["da6a24d2406b7c97b728c6ff62b21709", "e2f0940f582bbc106392b2bf98063cbb"], "statement_hash": "5e5ec36a3cf13bab1d54c4a81ac7e4e242aa243fade253713675c900924b1f0b"}, "url": "/docs/compare/?release=15.14#15.14-99b7043aab7b8b2f", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "2c53c54fdf068bc21cac5e41d449e779", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "在反解析查询时，始终在 FETCH FIRST expression ROWS WITH TIES 子句中的表达式周围添加括号", "evidence": {"same_day": true, "patch_ids": ["da6a24d2406b7c97b728c6ff62b21709", "e2f0940f582bbc106392b2bf98063cbb"], "statement_hash": "5e5ec36a3cf13bab1d54c4a81ac7e4e242aa243fade253713675c900924b1f0b"}, "url": "/docs/compare/?release=13.22#13.22-2a35de9d95005e82", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-f8241f57134fe016", "cves": [], "html": "<p>限制检查点进程的 fsync 请求队列大小（Alexander Korotkov、Xuneng Zhou）<a href=\"https://postgr.es/c/50026136c\">§</a> <a href=\"https://postgr.es/c/c5d66fc12\">§</a></p>\n<p>在 <code>shared_buffers</code> 设置非常大时，检查点进程可能尝试为 fsync 请求分配超过 1GB 的内存，导致失败并进入无限循环。限制队列大小以防止此情况发生。</p>", "text": "限制检查点进程的 fsync 请求队列大小（Alexander Korotkov、Xuneng Zhou）§ § 在 shared_buffers 设置非常大时，检查点进程可能尝试为 fsync 请求分配超过 1GB 的内存，导致失败并进入无限循环。限制队列大小以防止此情况发生。", "title": "限制检查点进程的 fsync 请求队列大小", "commits": ["50026136c", "c5d66fc12"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "fa560a426130a7e08a0f0f948f02e74b0825789d3d15474593db481b55ee3fc3", "section_path": ["变更"], "commit_groups": [["13559de95", "466c5435f", "50026136c", "b248a3ba4", "bae507821", "f0cdc2afd", "f32a47161"], ["2ac50f118", "5cfbff48a", "605890034", "73f897ba5", "7f872ae70", "c5d66fc12"]], "identity_text": "Limit the checkpointer process's fsync request queue size (Alexander Korotkov, Xuneng Zhou) With very large shared_buffers settings, it was possible for the checkpointer to attempt to allocate more than 1GB for fsync requests, leading to failure and an infinite loop. Clamp the queue size to prevent this scenario.", "commit_aliases": ["13559de95", "2ac50f118", "466c5435f", "50026136c", "5cfbff48a", "605890034", "73f897ba5", "7f872ae70", "b248a3ba4", "bae507821", "c5d66fc12", "f0cdc2afd", "f32a47161"], "source_commits": ["50026136c", "c5d66fc12"], "source_entry_id": "14.19/changes/013", "db_id": "f6a3dfeda75753850982973e1f165e27", "patch_ids": ["b33d312a12e371b36a675999aa9c4665", "bd53c105c4eb414f08698f7c4055b5d3"], "statement_hash": "301b8a1b01d246b950e5e16133e2ddbcb2b8294b545def270f1e0bad8d1dea57", "relations": [{"rule": 2, "type": "equivalent", "target": "281fc97a46282d1438f5efa7248025f2", "evidence": {"same_day": true, "patch_ids": ["b33d312a12e371b36a675999aa9c4665", "bd53c105c4eb414f08698f7c4055b5d3"], "statement_hash": "301b8a1b01d246b950e5e16133e2ddbcb2b8294b545def270f1e0bad8d1dea57"}}, {"rule": 2, "type": "equivalent", "target": "293f573a0de7ce494f7b2cfc6a4f2e11", "evidence": {"same_day": true, "patch_ids": ["b33d312a12e371b36a675999aa9c4665", "bd53c105c4eb414f08698f7c4055b5d3"], "statement_hash": "301b8a1b01d246b950e5e16133e2ddbcb2b8294b545def270f1e0bad8d1dea57"}}, {"rule": 2, "type": "equivalent", "target": "b6926393711900b935aaf06bb088735c", "evidence": {"same_day": true, "patch_ids": ["b33d312a12e371b36a675999aa9c4665", "bd53c105c4eb414f08698f7c4055b5d3"], "statement_hash": "301b8a1b01d246b950e5e16133e2ddbcb2b8294b545def270f1e0bad8d1dea57"}}, {"rule": 2, "type": "equivalent", "target": "e5af68e076117d795f0b8253008885d8", "evidence": {"same_day": true, "patch_ids": ["b33d312a12e371b36a675999aa9c4665", "bd53c105c4eb414f08698f7c4055b5d3"], "statement_hash": "301b8a1b01d246b950e5e16133e2ddbcb2b8294b545def270f1e0bad8d1dea57"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "b6926393711900b935aaf06bb088735c", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "限制检查点进程的 fsync 请求队列大小", "evidence": {"same_day": true, "patch_ids": ["b33d312a12e371b36a675999aa9c4665", "bd53c105c4eb414f08698f7c4055b5d3"], "statement_hash": "301b8a1b01d246b950e5e16133e2ddbcb2b8294b545def270f1e0bad8d1dea57"}, "url": "/docs/compare/?release=17.6#17.6-8c460f992a0ce3be", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "e5af68e076117d795f0b8253008885d8", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "限制检查点进程的 fsync 请求队列大小", "evidence": {"same_day": true, "patch_ids": ["b33d312a12e371b36a675999aa9c4665", "bd53c105c4eb414f08698f7c4055b5d3"], "statement_hash": "301b8a1b01d246b950e5e16133e2ddbcb2b8294b545def270f1e0bad8d1dea57"}, "url": "/docs/compare/?release=16.10#16.10-c29858c62d2499c3", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "281fc97a46282d1438f5efa7248025f2", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "限制检查点进程的 fsync 请求队列大小", "evidence": {"same_day": true, "patch_ids": ["b33d312a12e371b36a675999aa9c4665", "bd53c105c4eb414f08698f7c4055b5d3"], "statement_hash": "301b8a1b01d246b950e5e16133e2ddbcb2b8294b545def270f1e0bad8d1dea57"}, "url": "/docs/compare/?release=15.14#15.14-b5cdd8306236aec3", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "293f573a0de7ce494f7b2cfc6a4f2e11", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "限制检查点进程的 fsync 请求队列大小", "evidence": {"same_day": true, "patch_ids": ["b33d312a12e371b36a675999aa9c4665", "bd53c105c4eb414f08698f7c4055b5d3"], "statement_hash": "301b8a1b01d246b950e5e16133e2ddbcb2b8294b545def270f1e0bad8d1dea57"}, "url": "/docs/compare/?release=13.22#13.22-e8b5615708afb421", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-81c556306da153c8", "cves": [], "html": "<p>避免在读取部分写入的 WAL 记录时逻辑解码出现无限等待（Vignesh C）<a href=\"https://postgr.es/c/bedfdb85b\">§</a></p>\n<p>如果服务器在写入跨越多个页面的 WAL 记录的第一部分后崩溃，后续对该 WAL 流的逻辑解码将等待下一个 WAL 页面上的数据到来。如果服务器此时处于空闲状态，这可能永远不会发生。</p>", "text": "避免在读取部分写入的 WAL 记录时逻辑解码出现无限等待（Vignesh C）§ 如果服务器在写入跨越多个页面的 WAL 记录的第一部分后崩溃，后续对该 WAL 流的逻辑解码将等待下一个 WAL 页面上的数据到来。如果服务器此时处于空闲状态，这可能永远不会发生。", "title": "避免在读取部分写入的 WAL 记录时逻辑解码出现无限等待", "commits": ["bedfdb85b"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "5473d0eed3fa984d988bb8b61dfc639d17bf0ecb0097075a4586708346a76b18", "section_path": ["变更"], "commit_groups": [["5449d5b7a", "762f352ca", "9f270f48f", "b485e1c89", "bedfdb85b", "c9f4e7520", "d3917d8f1"]], "identity_text": "Avoid infinite wait in logical decoding when reading a partially-written WAL record (Vignesh C) If the server crashes after writing the first part of a WAL record that would span multiple pages, subsequent logical decoding of the WAL stream would wait for data to arrive on the next WAL page. That might never happen if the server is now idle.", "commit_aliases": ["5449d5b7a", "762f352ca", "9f270f48f", "b485e1c89", "bedfdb85b", "c9f4e7520", "d3917d8f1"], "source_commits": ["bedfdb85b"], "source_entry_id": "14.19/changes/014", "db_id": "ee8d9b40c53ea8c4169fbdeb6a702b0c", "patch_ids": ["144ef66a83178a770de8fdb2ebc4a8ca"], "statement_hash": "36121084c99a58bdd2789e976cd801346c4feca0c2b1726e05ff531a6a74e2e9", "relations": [{"rule": 2, "type": "equivalent", "target": "22e9d4de76eb1e464e3ec27fe97dd92f", "evidence": {"same_day": true, "patch_ids": ["144ef66a83178a770de8fdb2ebc4a8ca"], "statement_hash": "36121084c99a58bdd2789e976cd801346c4feca0c2b1726e05ff531a6a74e2e9"}}, {"rule": 2, "type": "equivalent", "target": "58b07f22664eda599d8b66bf542f2279", "evidence": {"same_day": true, "patch_ids": ["144ef66a83178a770de8fdb2ebc4a8ca"], "statement_hash": "36121084c99a58bdd2789e976cd801346c4feca0c2b1726e05ff531a6a74e2e9"}}, {"rule": 2, "type": "equivalent", "target": "93c9113e8027956fcabdf155f8f75e4e", "evidence": {"same_day": true, "patch_ids": ["144ef66a83178a770de8fdb2ebc4a8ca"], "statement_hash": "36121084c99a58bdd2789e976cd801346c4feca0c2b1726e05ff531a6a74e2e9"}}, {"rule": 2, "type": "equivalent", "target": "d765a2454362eae947f4e8fb58437956", "evidence": {"same_day": true, "patch_ids": ["144ef66a83178a770de8fdb2ebc4a8ca"], "statement_hash": "36121084c99a58bdd2789e976cd801346c4feca0c2b1726e05ff531a6a74e2e9"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "93c9113e8027956fcabdf155f8f75e4e", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "避免在读取部分写入的 WAL 记录时逻辑解码出现无限等待", "evidence": {"same_day": true, "patch_ids": ["144ef66a83178a770de8fdb2ebc4a8ca"], "statement_hash": "36121084c99a58bdd2789e976cd801346c4feca0c2b1726e05ff531a6a74e2e9"}, "url": "/docs/compare/?release=17.6#17.6-c0d682449b03726c", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "d765a2454362eae947f4e8fb58437956", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "避免在读取部分写入的 WAL 记录时逻辑解码出现无限等待", "evidence": {"same_day": true, "patch_ids": ["144ef66a83178a770de8fdb2ebc4a8ca"], "statement_hash": "36121084c99a58bdd2789e976cd801346c4feca0c2b1726e05ff531a6a74e2e9"}, "url": "/docs/compare/?release=16.10#16.10-c837113a33e19cfe", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "22e9d4de76eb1e464e3ec27fe97dd92f", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "避免在读取部分写入的 WAL 记录时逻辑解码出现无限等待", "evidence": {"same_day": true, "patch_ids": ["144ef66a83178a770de8fdb2ebc4a8ca"], "statement_hash": "36121084c99a58bdd2789e976cd801346c4feca0c2b1726e05ff531a6a74e2e9"}, "url": "/docs/compare/?release=15.14#15.14-d41948712b1e27a7", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "58b07f22664eda599d8b66bf542f2279", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "避免在读取部分写入的 WAL 记录时逻辑解码出现无限等待", "evidence": {"same_day": true, "patch_ids": ["144ef66a83178a770de8fdb2ebc4a8ca"], "statement_hash": "36121084c99a58bdd2789e976cd801346c4feca0c2b1726e05ff531a6a74e2e9"}, "url": "/docs/compare/?release=13.22#13.22-9aa3ca20baea6a38", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-47f9ee961e719688", "cves": [], "html": "<p>修复 ACL 字符串中角色名称引用的不一致问题（Tom Lane）<a href=\"https://postgr.es/c/ac8cdb249\">§</a></p>\n<p>之前的引用规则是与区域设置相关的，这在跨安装传输 <code>aclitem</code> 值时可能导致可移植性问题。（<span>pg_dump</span> 不会这样做，但其他工具可能会。）为确保一致性，始终在 <code>aclitem</code> 输出中引用非 ASCII 字符；但为了保持向后兼容性，在 <code>aclitem</code> 输入期间从不要求必须引用它们。</p>", "text": "修复 ACL 字符串中角色名称引用的不一致问题（Tom Lane）§ 之前的引用规则是与区域设置相关的，这在跨安装传输 aclitem 值时可能导致可移植性问题。（pg_dump 不会这样做，但其他工具可能会。）为确保一致性，始终在 aclitem 输出中引用非 ASCII 字符；但为了保持向后兼容性，在 aclitem 输入期间从不要求必须引用它们。", "title": "修复 ACL 字符串中角色名称引用的不一致问题", "commits": ["ac8cdb249"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "b5fbee605bd7d5e975cc01b00934b24a2d672b4563c60502f620ad88ec11d7ba", "section_path": ["变更"], "commit_groups": [["093d3d745", "50959f96e", "53a936b61", "64840e462", "ac8cdb249", "ccacaf4fa", "de73cb3ed"]], "identity_text": "Fix inconsistent quoting of role names in ACL strings (Tom Lane) The previous quoting rule was locale-sensitive, which could lead to portability problems when transferring aclitem values across installations. (pg_dump does not do that, but other tools might.) To ensure consistency, always quote non-ASCII characters in aclitem output; but to preserve backward compatibility, never require that they be quoted during aclitem input.", "commit_aliases": ["093d3d745", "50959f96e", "53a936b61", "64840e462", "ac8cdb249", "ccacaf4fa", "de73cb3ed"], "source_commits": ["ac8cdb249"], "source_entry_id": "14.19/changes/015", "db_id": "b8791b7c9aae59bb3cfe90cb33041834", "patch_ids": ["39e2337d7cb75da0757543c4712ffe4f"], "statement_hash": "3f8b86b2c5c3cfdc83c39ca4aa9e76aa8a1b4149c1b11f00f27f6527a241be5a", "relations": [{"rule": 2, "type": "equivalent", "target": "2ebcc8ebe5e9895dc288586a5815bda5", "evidence": {"same_day": true, "patch_ids": ["39e2337d7cb75da0757543c4712ffe4f"], "statement_hash": "3f8b86b2c5c3cfdc83c39ca4aa9e76aa8a1b4149c1b11f00f27f6527a241be5a"}}, {"rule": 2, "type": "equivalent", "target": "52a5d96d9176fa97a28373dd510d5655", "evidence": {"same_day": true, "patch_ids": ["39e2337d7cb75da0757543c4712ffe4f"], "statement_hash": "3f8b86b2c5c3cfdc83c39ca4aa9e76aa8a1b4149c1b11f00f27f6527a241be5a"}}, {"rule": 2, "type": "equivalent", "target": "6a9ae64e47841a3f6468aa39cba02cc6", "evidence": {"same_day": true, "patch_ids": ["39e2337d7cb75da0757543c4712ffe4f"], "statement_hash": "3f8b86b2c5c3cfdc83c39ca4aa9e76aa8a1b4149c1b11f00f27f6527a241be5a"}}, {"rule": 2, "type": "equivalent", "target": "c74f55acbfdeb5614806e71894c897e3", "evidence": {"same_day": true, "patch_ids": ["39e2337d7cb75da0757543c4712ffe4f"], "statement_hash": "3f8b86b2c5c3cfdc83c39ca4aa9e76aa8a1b4149c1b11f00f27f6527a241be5a"}}], "version": "14.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "6a9ae64e47841a3f6468aa39cba02cc6", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "修复 ACL 字符串中角色名称引用的不一致问题", "evidence": {"same_day": true, "patch_ids": ["39e2337d7cb75da0757543c4712ffe4f"], "statement_hash": "3f8b86b2c5c3cfdc83c39ca4aa9e76aa8a1b4149c1b11f00f27f6527a241be5a"}, "url": "/docs/compare/?release=17.6#17.6-4b38a13b8c214dd2", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "c74f55acbfdeb5614806e71894c897e3", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "修复 ACL 字符串中角色名称引用的不一致问题", "evidence": {"same_day": true, "patch_ids": ["39e2337d7cb75da0757543c4712ffe4f"], "statement_hash": "3f8b86b2c5c3cfdc83c39ca4aa9e76aa8a1b4149c1b11f00f27f6527a241be5a"}, "url": "/docs/compare/?release=16.10#16.10-31724e6d448f1e62", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "52a5d96d9176fa97a28373dd510d5655", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "修复 ACL 字符串中角色名称引用的不一致问题", "evidence": {"same_day": true, "patch_ids": ["39e2337d7cb75da0757543c4712ffe4f"], "statement_hash": "3f8b86b2c5c3cfdc83c39ca4aa9e76aa8a1b4149c1b11f00f27f6527a241be5a"}, "url": "/docs/compare/?release=15.14#15.14-fd663653ae3be56d", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "2ebcc8ebe5e9895dc288586a5815bda5", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "修复 ACL 字符串中角色名称引用的不一致问题", "evidence": {"same_day": true, "patch_ids": ["39e2337d7cb75da0757543c4712ffe4f"], "statement_hash": "3f8b86b2c5c3cfdc83c39ca4aa9e76aa8a1b4149c1b11f00f27f6527a241be5a"}, "url": "/docs/compare/?release=13.22#13.22-2e50f426919b1c43", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-0a15889291ed693e", "cves": [], "html": "<p>拒绝在关系选项和外部数据选项名称中使用等号（<code>=</code>）（Tom Lane）<a href=\"https://postgr.es/c/d4046125d\">§</a></p>\n<p>这类选项名称看不出有什么明确用途，而且允许它们会在存储表示中引入歧义。</p>", "text": "拒绝在关系选项和外部数据选项名称中使用等号（=）（Tom Lane）§ 这类选项名称看不出有什么明确用途，而且允许它们会在存储表示中引入歧义。", "title": "拒绝在关系选项和外部数据选项名称中使用等号（=）", "commits": ["d4046125d"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "0f17c79ef2616039ff6346bf53e44b45e29a6aae262aac7acfb432bf8339e2b5", "section_path": ["变更"], "commit_groups": [["aa87f69c0", "ab758ec4d", "cd31eaaeb", "d4046125d", "e76097124", "eb4234647"]], "identity_text": "Reject equal signs (=) in the names of relation options and foreign-data options (Tom Lane) There's no evident use-case for option names like this, and allowing them creates ambiguity in the stored representation.", "commit_aliases": ["aa87f69c0", "ab758ec4d", "cd31eaaeb", "d4046125d", "e76097124", "eb4234647"], "source_commits": ["eb4234647"], "source_entry_id": "14.19/changes/016", "db_id": "551cbede924847bceddaf0ffd39f78ad", "patch_ids": ["5cfa9a91458d8bf74a558cf8f029513d"], "statement_hash": "8330bbf241cac6f42857e63ccc59da91cb6130bb86df977a0a58ad80a4f8379c", "relations": [{"rule": 2, "type": "equivalent", "target": "2b2049899acbe82941a9b3346c211827", "evidence": {"same_day": true, "patch_ids": ["5cfa9a91458d8bf74a558cf8f029513d"], "statement_hash": "8330bbf241cac6f42857e63ccc59da91cb6130bb86df977a0a58ad80a4f8379c"}}, {"rule": 2, "type": "equivalent", "target": "378e12ec8d1b50d306d5e81833b0e06b", "evidence": {"same_day": true, "patch_ids": ["5cfa9a91458d8bf74a558cf8f029513d"], "statement_hash": "8330bbf241cac6f42857e63ccc59da91cb6130bb86df977a0a58ad80a4f8379c"}}, {"rule": 2, "type": "equivalent", "target": "ac49b5d91d6c372b4c08d08948f00a7f", "evidence": {"same_day": true, "patch_ids": ["5cfa9a91458d8bf74a558cf8f029513d"], "statement_hash": "8330bbf241cac6f42857e63ccc59da91cb6130bb86df977a0a58ad80a4f8379c"}}, {"rule": 2, "type": "equivalent", "target": "cce62d5f78858c2cfb840afd0ccc84d4", "evidence": {"same_day": true, "patch_ids": ["5cfa9a91458d8bf74a558cf8f029513d"], "statement_hash": "8330bbf241cac6f42857e63ccc59da91cb6130bb86df977a0a58ad80a4f8379c"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "ac49b5d91d6c372b4c08d08948f00a7f", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "拒绝在关系选项和外部数据选项名称中使用等号（=）", "evidence": {"same_day": true, "patch_ids": ["5cfa9a91458d8bf74a558cf8f029513d"], "statement_hash": "8330bbf241cac6f42857e63ccc59da91cb6130bb86df977a0a58ad80a4f8379c"}, "url": "/docs/compare/?release=17.6#17.6-0a15889291ed693e", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "2b2049899acbe82941a9b3346c211827", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "拒绝在关系选项和外部数据选项名称中使用等号（=）", "evidence": {"same_day": true, "patch_ids": ["5cfa9a91458d8bf74a558cf8f029513d"], "statement_hash": "8330bbf241cac6f42857e63ccc59da91cb6130bb86df977a0a58ad80a4f8379c"}, "url": "/docs/compare/?release=16.10#16.10-0a15889291ed693e", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "cce62d5f78858c2cfb840afd0ccc84d4", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "拒绝在关系选项和外部数据选项名称中使用等号（=）", "evidence": {"same_day": true, "patch_ids": ["5cfa9a91458d8bf74a558cf8f029513d"], "statement_hash": "8330bbf241cac6f42857e63ccc59da91cb6130bb86df977a0a58ad80a4f8379c"}, "url": "/docs/compare/?release=15.14#15.14-0a15889291ed693e", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "378e12ec8d1b50d306d5e81833b0e06b", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "拒绝在关系选项和外部数据选项的名称中使用等号（=）", "evidence": {"same_day": true, "patch_ids": ["5cfa9a91458d8bf74a558cf8f029513d"], "statement_hash": "8330bbf241cac6f42857e63ccc59da91cb6130bb86df977a0a58ad80a4f8379c"}, "url": "/docs/compare/?release=13.22#13.22-6240afb0d3c4527b", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-e337667a91002083", "cves": [], "html": "<p>避免 B-树索引扫描在罕见情况下将错误的索引条目标记为死条目（Peter Geoghegan）<a href=\"https://postgr.es/c/7c7c0a77d\">§</a></p>", "text": "避免 B-树索引扫描在罕见情况下将错误的索引条目标记为死条目（Peter Geoghegan）§", "title": "避免 B-树索引扫描在罕见情况下将错误的索引条目标记为死条目", "commits": ["7c7c0a77d"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "d0f6b40a42fe1ae6c74b80ad9d8856ab375de4b338d846315810b6fe23662342", "section_path": ["变更"], "commit_groups": [["38c8d2987", "40aa5ddea", "7c319f549", "7c7c0a77d", "c7f25feb3", "d2ec67109"]], "identity_text": "Avoid a rare scenario where a btree index scan could mark the wrong index entries as dead (Peter Geoghegan)", "commit_aliases": ["38c8d2987", "40aa5ddea", "7c319f549", "7c7c0a77d", "c7f25feb3", "d2ec67109"], "source_commits": ["7c7c0a77d"], "source_entry_id": "14.19/changes/017", "db_id": "3c09bd63d8e7c6a637ad01ffa6b1f882", "patch_ids": ["aad96c72a59beb69e1860513caa21d9f"], "statement_hash": "d899960974f459230ac3f3091253ae0f247bae81693df68cda29e10707290ad6", "relations": [{"rule": 2, "type": "equivalent", "target": "13ed0887bc8dac0823c64554459a581c", "evidence": {"same_day": true, "patch_ids": ["aad96c72a59beb69e1860513caa21d9f"], "statement_hash": "d899960974f459230ac3f3091253ae0f247bae81693df68cda29e10707290ad6"}}, {"rule": 2, "type": "equivalent", "target": "19b1fbc49c15351ae0829b195564baa0", "evidence": {"same_day": true, "patch_ids": ["aad96c72a59beb69e1860513caa21d9f"], "statement_hash": "d899960974f459230ac3f3091253ae0f247bae81693df68cda29e10707290ad6"}}, {"rule": 2, "type": "equivalent", "target": "2896a1f0aa2fe4a744169742b2559dcd", "evidence": {"same_day": true, "patch_ids": ["aad96c72a59beb69e1860513caa21d9f"], "statement_hash": "d899960974f459230ac3f3091253ae0f247bae81693df68cda29e10707290ad6"}}, {"rule": 2, "type": "equivalent", "target": "7907917b0e9fc70fa54857b3dd5f0789", "evidence": {"same_day": true, "patch_ids": ["aad96c72a59beb69e1860513caa21d9f"], "statement_hash": "d899960974f459230ac3f3091253ae0f247bae81693df68cda29e10707290ad6"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "2896a1f0aa2fe4a744169742b2559dcd", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "避免 B-树索引扫描在罕见情况下将错误的索引条目标记为死条目", "evidence": {"same_day": true, "patch_ids": ["aad96c72a59beb69e1860513caa21d9f"], "statement_hash": "d899960974f459230ac3f3091253ae0f247bae81693df68cda29e10707290ad6"}, "url": "/docs/compare/?release=17.6#17.6-5825acdc2554d8ce", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "13ed0887bc8dac0823c64554459a581c", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "避免 B-树索引扫描在罕见情况下将错误的索引条目标记为死条目", "evidence": {"same_day": true, "patch_ids": ["aad96c72a59beb69e1860513caa21d9f"], "statement_hash": "d899960974f459230ac3f3091253ae0f247bae81693df68cda29e10707290ad6"}, "url": "/docs/compare/?release=16.10#16.10-2b08a4614d13a7a4", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "19b1fbc49c15351ae0829b195564baa0", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "避免 B-树索引扫描在罕见情况下将错误的索引条目标记为死条目", "evidence": {"same_day": true, "patch_ids": ["aad96c72a59beb69e1860513caa21d9f"], "statement_hash": "d899960974f459230ac3f3091253ae0f247bae81693df68cda29e10707290ad6"}, "url": "/docs/compare/?release=15.14#15.14-3522682a6e13212e", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "7907917b0e9fc70fa54857b3dd5f0789", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "避免 B-树索引扫描在罕见情况下将错误的索引条目标记为死条目", "evidence": {"same_day": true, "patch_ids": ["aad96c72a59beb69e1860513caa21d9f"], "statement_hash": "d899960974f459230ac3f3091253ae0f247bae81693df68cda29e10707290ad6"}, "url": "/docs/compare/?release=13.22#13.22-b6601ad2fa69571a", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-6c93c6ab7dac53db", "cves": [], "html": "<p>避免在逻辑复制期间重新分发来自其他事务的缓存失效消息（Vignesh C）<a href=\"https://postgr.es/c/45c357e0e\">§</a></p>\n<p>我们上一轮次版本发布中包含了一项修复，确保复制接收进程会响应跨进程缓存失效消息，从而避免它们在执行复制更新时使用过期的系统目录数据。然而，该修复无意中也让这些进程再次重新分发这些消息，导致失效消息数量呈指数级增长，并且常常以内存分配失败告终。现已通过不重新分发收到的消息来修复该问题。</p>", "text": "避免在逻辑复制期间重新分发来自其他事务的缓存失效消息（Vignesh C）§ 我们上一轮次版本发布中包含了一项修复，确保复制接收进程会响应跨进程缓存失效消息，从而避免它们在执行复制更新时使用过期的系统目录数据。然而，该修复无意中也让这些进程再次重新分发这些消息，导致失效消息数量呈指数级增长，并且常常以内存分配失败告终。现已通过不重新分发收到的消息来修复该问题。", "title": "避免在逻辑复制期间重新分发来自其他事务的缓存失效消息", "commits": ["45c357e0e"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "0f11db1d537fa06caa055e7542e8cc8c970b97e115931a3e8f9f729207e6b0fa", "section_path": ["变更"], "commit_groups": [["1230be12f", "45c357e0e", "983b36362", "b2ae07720", "d87d07b7a", "fc0fb77c5"], ["87819f766"]], "identity_text": "Avoid re-distributing cache invalidation messages from other transactions during logical replication (vignesh C) Our previous round of minor releases included a bug fix to ensure that replication receiver processes would respond to cross-process cache invalidation messages, preventing them from using stale catalog data while performing replication updates. However, the fix unintentionally made them also redistribute those messages again, leading to an exponential increase in the number of invalidation messages, which would often end in a memory allocation failure. Fix by not redistributing received messages.", "commit_aliases": ["1230be12f", "45c357e0e", "87819f766", "983b36362", "b2ae07720", "d87d07b7a", "fc0fb77c5"], "source_commits": ["87819f766", "983b36362"], "source_entry_id": "14.19/changes/018", "db_id": "1b42275facb138dcb392f27b6e27f9a4", "patch_ids": ["44892eb4edae7c935ca996ba7215a3be", "9144d1cc1257f28763bbe94a44dcec67"], "statement_hash": "cb76142d5aa80484a475a98632d6f3282d96cb8992669eaaed5c92b24c4f534d", "relations": [{"rule": 2, "type": "equivalent", "target": "4eaa52c036c883f61e659c01b52fb190", "evidence": {"same_day": true, "patch_ids": ["44892eb4edae7c935ca996ba7215a3be", "9144d1cc1257f28763bbe94a44dcec67"], "statement_hash": "cb76142d5aa80484a475a98632d6f3282d96cb8992669eaaed5c92b24c4f534d"}}, {"rule": 2, "type": "equivalent", "target": "a9cc9dab0228660da06096fd68f433f3", "evidence": {"same_day": true, "patch_ids": ["44892eb4edae7c935ca996ba7215a3be", "9144d1cc1257f28763bbe94a44dcec67"], "statement_hash": "cb76142d5aa80484a475a98632d6f3282d96cb8992669eaaed5c92b24c4f534d"}}, {"rule": 2, "type": "equivalent", "target": "b3009aa88c3ced8a05c6dba715705c19", "evidence": {"same_day": true, "patch_ids": ["44892eb4edae7c935ca996ba7215a3be", "9144d1cc1257f28763bbe94a44dcec67"], "statement_hash": "cb76142d5aa80484a475a98632d6f3282d96cb8992669eaaed5c92b24c4f534d"}}, {"rule": 2, "type": "equivalent", "target": "c21a911113d9e87b49c45518f22a2dfc", "evidence": {"same_day": true, "patch_ids": ["44892eb4edae7c935ca996ba7215a3be", "9144d1cc1257f28763bbe94a44dcec67"], "statement_hash": "cb76142d5aa80484a475a98632d6f3282d96cb8992669eaaed5c92b24c4f534d"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "4eaa52c036c883f61e659c01b52fb190", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "避免在逻辑复制期间重新分发来自其他事务的缓存失效消息", "evidence": {"same_day": true, "patch_ids": ["44892eb4edae7c935ca996ba7215a3be", "9144d1cc1257f28763bbe94a44dcec67"], "statement_hash": "cb76142d5aa80484a475a98632d6f3282d96cb8992669eaaed5c92b24c4f534d"}, "url": "/docs/compare/?release=17.6#17.6-6c93c6ab7dac53db", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "b3009aa88c3ced8a05c6dba715705c19", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "避免在逻辑复制期间重新分发来自其他事务的缓存失效消息", "evidence": {"same_day": true, "patch_ids": ["44892eb4edae7c935ca996ba7215a3be", "9144d1cc1257f28763bbe94a44dcec67"], "statement_hash": "cb76142d5aa80484a475a98632d6f3282d96cb8992669eaaed5c92b24c4f534d"}, "url": "/docs/compare/?release=16.10#16.10-6c93c6ab7dac53db", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "c21a911113d9e87b49c45518f22a2dfc", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "避免在逻辑复制期间重新分发来自其他事务的缓存失效消息", "evidence": {"same_day": true, "patch_ids": ["44892eb4edae7c935ca996ba7215a3be", "9144d1cc1257f28763bbe94a44dcec67"], "statement_hash": "cb76142d5aa80484a475a98632d6f3282d96cb8992669eaaed5c92b24c4f534d"}, "url": "/docs/compare/?release=15.14#15.14-6c93c6ab7dac53db", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "a9cc9dab0228660da06096fd68f433f3", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "避免在逻辑复制期间重新分发来自其他事务的缓存失效消息", "evidence": {"same_day": true, "patch_ids": ["44892eb4edae7c935ca996ba7215a3be", "9144d1cc1257f28763bbe94a44dcec67"], "statement_hash": "cb76142d5aa80484a475a98632d6f3282d96cb8992669eaaed5c92b24c4f534d"}, "url": "/docs/compare/?release=13.22#13.22-3fd682e6d8f36911", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-1494a836c62de80f", "cves": [], "html": "<p>避免在检查点期间过早移除旧 WAL（Vitaly Davydov）<a href=\"https://postgr.es/c/2090edc6f\">§</a></p>\n<p>如果在检查点进行期间推进了某个复制槽的 restart point，那么已不再需要的 WAL 段可能会被过早移除，从而在数据库随后立即崩溃时导致恢复失败。现已通过额外保留一个检查点周期来修复此问题。</p>", "text": "避免在检查点期间过早移除旧 WAL（Vitaly Davydov）§ 如果在检查点进行期间推进了某个复制槽的 restart point，那么已不再需要的 WAL 段可能会被过早移除，从而在数据库随后立即崩溃时导致恢复失败。现已通过额外保留一个检查点周期来修复此问题。", "title": "避免在检查点期间过早移除旧 WAL", "commits": ["2090edc6f"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "8fe591619ad771526ea13a03096359fc11ee19179abec0a8b39981087eca592b", "section_path": ["变更"], "commit_groups": [["2090edc6f", "cea8f2c3e", "dd3df0b85", "dd9bc1a17", "e2832bd96"]], "identity_text": "Avoid premature removal of old WAL during checkpoints (Vitaly Davydov) If a replication slot's restart point is advanced while a checkpoint is in progress, no-longer-needed WAL segments could get removed too soon, leading to recovery failure if the database crashes immediately afterwards. Fix by keeping them for one additional checkpoint cycle.", "commit_aliases": ["2090edc6f", "cea8f2c3e", "dd3df0b85", "dd9bc1a17", "e2832bd96"], "source_commits": ["e2832bd96"], "source_entry_id": "14.19/changes/019", "db_id": "991bdbb446e54520c74d7fbfcb5eb2d5", "patch_ids": ["0b3f1a7eb4fd7ec82c605bba05f1ed04"], "statement_hash": "f9ccd6fcb293b2899cd65dbde83e990bd6cdb466fe17d70177c6d3a300702857", "relations": [{"rule": 2, "type": "equivalent", "target": "0b434eea45e0fa732c2e0f652d15f416", "evidence": {"same_day": true, "patch_ids": ["0b3f1a7eb4fd7ec82c605bba05f1ed04"], "statement_hash": "f9ccd6fcb293b2899cd65dbde83e990bd6cdb466fe17d70177c6d3a300702857"}}, {"rule": 2, "type": "equivalent", "target": "157e22a9e0303f40144c7595100b1787", "evidence": {"same_day": true, "patch_ids": ["0b3f1a7eb4fd7ec82c605bba05f1ed04"], "statement_hash": "f9ccd6fcb293b2899cd65dbde83e990bd6cdb466fe17d70177c6d3a300702857"}}, {"rule": 2, "type": "equivalent", "target": "6b7844a84a190d055371db21611e225a", "evidence": {"same_day": true, "patch_ids": ["0b3f1a7eb4fd7ec82c605bba05f1ed04"], "statement_hash": "f9ccd6fcb293b2899cd65dbde83e990bd6cdb466fe17d70177c6d3a300702857"}}, {"rule": 2, "type": "equivalent", "target": "9cd299656d523ad883dc82d378ca2484", "evidence": {"same_day": true, "patch_ids": ["0b3f1a7eb4fd7ec82c605bba05f1ed04"], "statement_hash": "f9ccd6fcb293b2899cd65dbde83e990bd6cdb466fe17d70177c6d3a300702857"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "157e22a9e0303f40144c7595100b1787", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "避免在检查点期间过早移除旧 WAL", "evidence": {"same_day": true, "patch_ids": ["0b3f1a7eb4fd7ec82c605bba05f1ed04"], "statement_hash": "f9ccd6fcb293b2899cd65dbde83e990bd6cdb466fe17d70177c6d3a300702857"}, "url": "/docs/compare/?release=17.6#17.6-1494a836c62de80f", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "0b434eea45e0fa732c2e0f652d15f416", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "避免在检查点期间过早移除旧 WAL", "evidence": {"same_day": true, "patch_ids": ["0b3f1a7eb4fd7ec82c605bba05f1ed04"], "statement_hash": "f9ccd6fcb293b2899cd65dbde83e990bd6cdb466fe17d70177c6d3a300702857"}, "url": "/docs/compare/?release=16.10#16.10-1494a836c62de80f", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "9cd299656d523ad883dc82d378ca2484", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "避免在检查点期间过早移除旧 WAL", "evidence": {"same_day": true, "patch_ids": ["0b3f1a7eb4fd7ec82c605bba05f1ed04"], "statement_hash": "f9ccd6fcb293b2899cd65dbde83e990bd6cdb466fe17d70177c6d3a300702857"}, "url": "/docs/compare/?release=15.14#15.14-1494a836c62de80f", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "6b7844a84a190d055371db21611e225a", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "避免在检查点期间过早移除旧的 WAL", "evidence": {"same_day": true, "patch_ids": ["0b3f1a7eb4fd7ec82c605bba05f1ed04"], "statement_hash": "f9ccd6fcb293b2899cd65dbde83e990bd6cdb466fe17d70177c6d3a300702857"}, "url": "/docs/compare/?release=13.22#13.22-fc131f2ed494a6e9", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-1b410e48287bb276", "cves": [], "html": "<p>绝不要向后移动复制槽的 confirmed-flush 位置（Shveta Malik）<a href=\"https://postgr.es/c/7318f241d\">§</a></p>\n<p>在某些情况下，复制客户端可能会确认一个超过其持久化存储位置的 LSN，然后在重启后又发送一个更旧的 LSN。只要客户端对这两个位置之间的 WAL 没有任何必须执行的操作，我们就认为这并不是缺陷。不过，为避免数据重复，我们不应重新发送那段 WAL，因此要确保对给定槽始终采用最新的 confirmed LSN。</p>", "text": "绝不要向后移动复制槽的 confirmed-flush 位置（Shveta Malik）§ 在某些情况下，复制客户端可能会确认一个超过其持久化存储位置的 LSN，然后在重启后又发送一个更旧的 LSN。只要客户端对这两个位置之间的 WAL 没有任何必须执行的操作，我们就认为这并不是缺陷。不过，为避免数据重复，我们不应重新发送那段 WAL，因此要确保对给定槽始终采用最新的 confirmed LSN。", "title": "绝不要向后移动复制槽的 confirmed-flush 位置", "commits": ["7318f241d"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "f4ba719465581f785615b7ef8d10e5086850f1a8ef0b5814120e40bdb6c62234", "section_path": ["变更"], "commit_groups": [["7318f241d", "9d1a62359", "ad5eaf390", "c0f51fde5", "e323d9df0", "e68459489"]], "identity_text": "Never move a replication slot's confirmed-flush position backwards (Shveta Malik) In some cases a replication client could acknowledge an LSN that's past what it has stored persistently, and then perhaps send an older LSN after a restart. We consider this not-a-bug so long as the client did not have anything it needed to do for the WAL between the two points. However, we should not re-send that WAL for fear of data duplication, so make sure we always believe the latest confirmed LSN for a given slot.", "commit_aliases": ["7318f241d", "9d1a62359", "ad5eaf390", "c0f51fde5", "e323d9df0", "e68459489"], "source_commits": ["e68459489"], "source_entry_id": "14.19/changes/020", "db_id": "6d9a892128e3245f9c561bcf03f2d17d", "patch_ids": ["2de9aabd4b6d806cb09f97233c42d8b9"], "statement_hash": "5099a5e2a539f415dfef4d115b189733d47e78c23e785a29b6426dcc967cc5e8", "relations": [{"rule": 2, "type": "equivalent", "target": "302bc1e6fedc523897672d05dfe14569", "evidence": {"same_day": true, "patch_ids": ["2de9aabd4b6d806cb09f97233c42d8b9"], "statement_hash": "5099a5e2a539f415dfef4d115b189733d47e78c23e785a29b6426dcc967cc5e8"}}, {"rule": 2, "type": "equivalent", "target": "543c80aec11057987c705aefac252ccb", "evidence": {"same_day": true, "patch_ids": ["2de9aabd4b6d806cb09f97233c42d8b9"], "statement_hash": "5099a5e2a539f415dfef4d115b189733d47e78c23e785a29b6426dcc967cc5e8"}}, {"rule": 2, "type": "equivalent", "target": "a5a72dc4b4696a8ef2999104a04f52ef", "evidence": {"same_day": true, "patch_ids": ["2de9aabd4b6d806cb09f97233c42d8b9"], "statement_hash": "5099a5e2a539f415dfef4d115b189733d47e78c23e785a29b6426dcc967cc5e8"}}, {"rule": 2, "type": "equivalent", "target": "c47cce13b2327ae5b79682de3bf86211", "evidence": {"same_day": true, "patch_ids": ["2de9aabd4b6d806cb09f97233c42d8b9"], "statement_hash": "5099a5e2a539f415dfef4d115b189733d47e78c23e785a29b6426dcc967cc5e8"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "c47cce13b2327ae5b79682de3bf86211", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "绝不要向后移动复制槽的 confirmed-flush 位置", "evidence": {"same_day": true, "patch_ids": ["2de9aabd4b6d806cb09f97233c42d8b9"], "statement_hash": "5099a5e2a539f415dfef4d115b189733d47e78c23e785a29b6426dcc967cc5e8"}, "url": "/docs/compare/?release=17.6#17.6-1b410e48287bb276", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "302bc1e6fedc523897672d05dfe14569", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "绝不要向后移动复制槽的 confirmed-flush 位置", "evidence": {"same_day": true, "patch_ids": ["2de9aabd4b6d806cb09f97233c42d8b9"], "statement_hash": "5099a5e2a539f415dfef4d115b189733d47e78c23e785a29b6426dcc967cc5e8"}, "url": "/docs/compare/?release=16.10#16.10-1b410e48287bb276", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "a5a72dc4b4696a8ef2999104a04f52ef", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "绝不要向后移动复制槽的 confirmed-flush 位置", "evidence": {"same_day": true, "patch_ids": ["2de9aabd4b6d806cb09f97233c42d8b9"], "statement_hash": "5099a5e2a539f415dfef4d115b189733d47e78c23e785a29b6426dcc967cc5e8"}, "url": "/docs/compare/?release=15.14#15.14-1b410e48287bb276", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "543c80aec11057987c705aefac252ccb", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "绝不将复制槽的已确认刷新位置向后移动", "evidence": {"same_day": true, "patch_ids": ["2de9aabd4b6d806cb09f97233c42d8b9"], "statement_hash": "5099a5e2a539f415dfef4d115b189733d47e78c23e785a29b6426dcc967cc5e8"}, "url": "/docs/compare/?release=13.22#13.22-8712d41c8b7aa917", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-edcd26180e8726a0", "cves": [], "html": "<p>允许中断在备库服务器上等待事务结束的操作（Kevin K Biju）<a href=\"https://postgr.es/c/24c5ad5be\">§</a></p>\n<p>在备库服务器上创建复制槽时，可能需要等待主库上的某些活动事务结束，并在备库上完成回放。由于这可能是无限期等待，因此理应允许取消该操作，但原先循环中没有检查查询取消。</p>", "text": "允许中断在备库服务器上等待事务结束的操作（Kevin K Biju）§ 在备库服务器上创建复制槽时，可能需要等待主库上的某些活动事务结束，并在备库上完成回放。由于这可能是无限期等待，因此理应允许取消该操作，但原先循环中没有检查查询取消。", "title": "允许中断在备库服务器上等待事务结束的操作", "commits": ["24c5ad5be"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "d451884996c84fe5276b0d859c3596468cbf017eda1089932bc6b2ef2d93e5d3", "section_path": ["变更"], "commit_groups": [["24c5ad5be", "405cca9da", "63fa7caa9", "706344f06", "9130d8eee", "961553daf"]], "identity_text": "Allow waiting for a transaction on a standby server to be interrupted (Kevin K Biju) Creation of a replication slot on a standby server may require waiting for some active transaction(s) to finish on the primary and then be replayed on the standby. Since that could be an indefinite wait, it's desirable to allow the operation to be cancelled, but there was no check for query cancel in the loop.", "commit_aliases": ["24c5ad5be", "405cca9da", "63fa7caa9", "706344f06", "9130d8eee", "961553daf"], "source_commits": ["9130d8eee"], "source_entry_id": "14.19/changes/021", "db_id": "b6b261baad736c03573d16bfb1b117b3", "patch_ids": ["187e0d1d9cfa1bfc5dfe37756a2c0c56"], "statement_hash": "9462db228f22687711dee0ec8d8acebf64eda37d04aeb9701390084ffe456f45", "relations": [{"rule": 2, "type": "equivalent", "target": "0e70198e4406f4acd9a45e1827f2a947", "evidence": {"same_day": true, "patch_ids": ["187e0d1d9cfa1bfc5dfe37756a2c0c56"], "statement_hash": "9462db228f22687711dee0ec8d8acebf64eda37d04aeb9701390084ffe456f45"}}, {"rule": 2, "type": "equivalent", "target": "441419563e7b1213eb40a5ad00a314a2", "evidence": {"same_day": true, "patch_ids": ["187e0d1d9cfa1bfc5dfe37756a2c0c56"], "statement_hash": "9462db228f22687711dee0ec8d8acebf64eda37d04aeb9701390084ffe456f45"}}, {"rule": 2, "type": "equivalent", "target": "747d14855d798bb1987f50d262b8d020", "evidence": {"same_day": true, "patch_ids": ["187e0d1d9cfa1bfc5dfe37756a2c0c56"], "statement_hash": "9462db228f22687711dee0ec8d8acebf64eda37d04aeb9701390084ffe456f45"}}, {"rule": 2, "type": "equivalent", "target": "82cbaa6bcb1ffd8af558965a2d5c0001", "evidence": {"same_day": true, "patch_ids": ["187e0d1d9cfa1bfc5dfe37756a2c0c56"], "statement_hash": "9462db228f22687711dee0ec8d8acebf64eda37d04aeb9701390084ffe456f45"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "441419563e7b1213eb40a5ad00a314a2", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "允许中断在备库服务器上等待事务结束的操作", "evidence": {"same_day": true, "patch_ids": ["187e0d1d9cfa1bfc5dfe37756a2c0c56"], "statement_hash": "9462db228f22687711dee0ec8d8acebf64eda37d04aeb9701390084ffe456f45"}, "url": "/docs/compare/?release=17.6#17.6-edcd26180e8726a0", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "0e70198e4406f4acd9a45e1827f2a947", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "允许中断在备库服务器上等待事务结束的操作", "evidence": {"same_day": true, "patch_ids": ["187e0d1d9cfa1bfc5dfe37756a2c0c56"], "statement_hash": "9462db228f22687711dee0ec8d8acebf64eda37d04aeb9701390084ffe456f45"}, "url": "/docs/compare/?release=16.10#16.10-edcd26180e8726a0", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "82cbaa6bcb1ffd8af558965a2d5c0001", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "允许中断在备库服务器上等待事务结束的操作", "evidence": {"same_day": true, "patch_ids": ["187e0d1d9cfa1bfc5dfe37756a2c0c56"], "statement_hash": "9462db228f22687711dee0ec8d8acebf64eda37d04aeb9701390084ffe456f45"}, "url": "/docs/compare/?release=15.14#15.14-edcd26180e8726a0", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "747d14855d798bb1987f50d262b8d020", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "允许在备库上等待事务时被中断", "evidence": {"same_day": true, "patch_ids": ["187e0d1d9cfa1bfc5dfe37756a2c0c56"], "statement_hash": "9462db228f22687711dee0ec8d8acebf64eda37d04aeb9701390084ffe456f45"}, "url": "/docs/compare/?release=13.22#13.22-b7873e51a933f275", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-087c775fe6a3a18e", "cves": [], "html": "<p>修复某些位置可能在没有任何快照的情况下尝试获取系统目录中经过 TOAST 处理的字段的问题（Nathan Bossart）<a href=\"https://postgr.es/c/b65be6ef0\">§</a></p>\n<p>这可能导致断言失败，或出现 <span>“<span>cannot fetch toast data without an active snapshot</span>”</span> 错误。</p>", "text": "修复某些位置可能在没有任何快照的情况下尝试获取系统目录中经过 TOAST 处理的字段的问题（Nathan Bossart）§ 这可能导致断言失败，或出现 “cannot fetch toast data without an active snapshot” 错误。", "title": "修复某些位置可能在没有任何快照的情况下尝试获取系统目录中经过 TOAST 处理的字段的问题", "commits": ["b65be6ef0"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "0e36de63d0a79b4a4f2fc5622cb7ebf3c6c686720f8103cff6b5f7380322704c", "section_path": ["变更"], "commit_groups": [["24135398f", "706054b11", "b65be6ef0", "b7ba2c030", "ddfcfb7ce", "fe8ea7a2a"]], "identity_text": "Fix some places that might try to fetch toasted fields of system catalogs without any snapshot (Nathan Bossart) This could result in an assertion failure or cannot fetch toast data without an active snapshot error.", "commit_aliases": ["24135398f", "706054b11", "b65be6ef0", "b7ba2c030", "ddfcfb7ce", "fe8ea7a2a"], "source_commits": ["b65be6ef0"], "source_entry_id": "14.19/changes/022", "db_id": "71af29c15aec4afda1d0cec55f5993c7", "patch_ids": ["777b876710acba4c29adff1116eae778"], "statement_hash": "32305323df3e7ebd92b18aa9e41b9366a0801e7322a1b13d39c8cb21303353dc", "relations": [{"rule": 2, "type": "equivalent", "target": "15a89da07fe56608bc1bd8adff46e90e", "evidence": {"same_day": true, "patch_ids": ["777b876710acba4c29adff1116eae778"], "statement_hash": "32305323df3e7ebd92b18aa9e41b9366a0801e7322a1b13d39c8cb21303353dc"}}, {"rule": 2, "type": "equivalent", "target": "24c6e466f5e05041256451869f823aa4", "evidence": {"same_day": true, "patch_ids": ["777b876710acba4c29adff1116eae778"], "statement_hash": "32305323df3e7ebd92b18aa9e41b9366a0801e7322a1b13d39c8cb21303353dc"}}, {"rule": 2, "type": "equivalent", "target": "47e6dd4cda3e298da853c98533997be9", "evidence": {"same_day": true, "patch_ids": ["777b876710acba4c29adff1116eae778"], "statement_hash": "32305323df3e7ebd92b18aa9e41b9366a0801e7322a1b13d39c8cb21303353dc"}}, {"rule": 2, "type": "equivalent", "target": "f19c9f66fd0acfaaf9767b1401906b20", "evidence": {"same_day": true, "patch_ids": ["777b876710acba4c29adff1116eae778"], "statement_hash": "32305323df3e7ebd92b18aa9e41b9366a0801e7322a1b13d39c8cb21303353dc"}}], "version": "14.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "24c6e466f5e05041256451869f823aa4", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "修复某些位置可能在没有任何快照的情况下尝试获取系统目录中经过 TOAST 处理的字段的问题", "evidence": {"same_day": true, "patch_ids": ["777b876710acba4c29adff1116eae778"], "statement_hash": "32305323df3e7ebd92b18aa9e41b9366a0801e7322a1b13d39c8cb21303353dc"}, "url": "/docs/compare/?release=17.6#17.6-32486322b55d4f87", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "f19c9f66fd0acfaaf9767b1401906b20", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "修复某些位置可能在没有任何快照的情况下尝试获取系统目录中经过 TOAST 处理的字段的问题", "evidence": {"same_day": true, "patch_ids": ["777b876710acba4c29adff1116eae778"], "statement_hash": "32305323df3e7ebd92b18aa9e41b9366a0801e7322a1b13d39c8cb21303353dc"}, "url": "/docs/compare/?release=16.10#16.10-07ee29e0a74ee196", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "47e6dd4cda3e298da853c98533997be9", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "修复某些位置可能在没有任何快照的情况下尝试获取系统目录中经过 TOAST 处理的字段的问题", "evidence": {"same_day": true, "patch_ids": ["777b876710acba4c29adff1116eae778"], "statement_hash": "32305323df3e7ebd92b18aa9e41b9366a0801e7322a1b13d39c8cb21303353dc"}, "url": "/docs/compare/?release=15.14#15.14-3631801cfbc2b6e0", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "15a89da07fe56608bc1bd8adff46e90e", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "修复某些位置可能在没有任何快照的情况下尝试获取系统目录中经过 TOAST 处理的字段的问题", "evidence": {"same_day": true, "patch_ids": ["777b876710acba4c29adff1116eae778"], "statement_hash": "32305323df3e7ebd92b18aa9e41b9366a0801e7322a1b13d39c8cb21303353dc"}, "url": "/docs/compare/?release=13.22#13.22-ee0f78fa7dcf53d5", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-90acdd628e8a125e", "cves": [], "html": "<p>避免在跨表约束更新期间的断言失败（Tom Lane、Jian He）<a href=\"https://postgr.es/c/25cab4473\">§</a> <a href=\"https://postgr.es/c/e902f8181\">§</a></p>", "text": "避免在跨表约束更新期间的断言失败（Tom Lane、Jian He）§ §", "title": "避免在跨表约束更新期间的断言失败", "commits": ["25cab4473", "e902f8181"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "0af5818a74cddae96af847ed3129c29ac8882feb520d4ea7dc68962b1eaed121", "section_path": ["变更"], "commit_groups": [["13f1e9f26", "25cab4473", "614ffb26d", "8319e5cb5", "bbfcbc4cd", "c15798cf9"], ["3d7a96871", "6d4395b40", "a10f21e6c", "d36980b71", "e6dd6e6ee", "e902f8181", "f9ba071cc"]], "identity_text": "Avoid assertion failure during cross-table constraint updates (Tom Lane, Jian He)", "commit_aliases": ["13f1e9f26", "25cab4473", "3d7a96871", "614ffb26d", "6d4395b40", "8319e5cb5", "a10f21e6c", "bbfcbc4cd", "c15798cf9", "d36980b71", "e6dd6e6ee", "e902f8181", "f9ba071cc"], "source_commits": ["25cab4473", "e902f8181"], "source_entry_id": "14.19/changes/023", "db_id": "be837258ad2a7ec6fa752a4d5cbcc0f4", "patch_ids": ["38c2659d2d49792d4d5949aa17d94ffe", "e89d49ef181d2ea31edebe391d6585af"], "statement_hash": "315810c8210fbe84750562b49ec74df0b04879406e3b1c8ac94da02ffc01dcfd", "relations": [{"rule": 2, "type": "equivalent", "target": "4a0017ac513db3525a50660bd847b530", "evidence": {"same_day": true, "patch_ids": ["38c2659d2d49792d4d5949aa17d94ffe", "e89d49ef181d2ea31edebe391d6585af"], "statement_hash": "315810c8210fbe84750562b49ec74df0b04879406e3b1c8ac94da02ffc01dcfd"}}, {"rule": 2, "type": "equivalent", "target": "5bd246584254c738e7c72084c1a50eb1", "evidence": {"same_day": true, "patch_ids": ["38c2659d2d49792d4d5949aa17d94ffe", "e89d49ef181d2ea31edebe391d6585af"], "statement_hash": "315810c8210fbe84750562b49ec74df0b04879406e3b1c8ac94da02ffc01dcfd"}}, {"rule": 2, "type": "equivalent", "target": "7dbbc995359387cd322a74bf2d8ed14e", "evidence": {"same_day": true, "patch_ids": ["38c2659d2d49792d4d5949aa17d94ffe", "e89d49ef181d2ea31edebe391d6585af"], "statement_hash": "315810c8210fbe84750562b49ec74df0b04879406e3b1c8ac94da02ffc01dcfd"}}, {"rule": 2, "type": "equivalent", "target": "8e5c82e0c9a4620f5e78f373d6eab4de", "evidence": {"same_day": true, "patch_ids": ["38c2659d2d49792d4d5949aa17d94ffe", "e89d49ef181d2ea31edebe391d6585af"], "statement_hash": "315810c8210fbe84750562b49ec74df0b04879406e3b1c8ac94da02ffc01dcfd"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "8e5c82e0c9a4620f5e78f373d6eab4de", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "避免在跨表约束更新期间的断言失败", "evidence": {"same_day": true, "patch_ids": ["38c2659d2d49792d4d5949aa17d94ffe", "e89d49ef181d2ea31edebe391d6585af"], "statement_hash": "315810c8210fbe84750562b49ec74df0b04879406e3b1c8ac94da02ffc01dcfd"}, "url": "/docs/compare/?release=17.6#17.6-2438f96ba5a2f4e7", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "4a0017ac513db3525a50660bd847b530", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "避免在跨表约束更新期间的断言失败", "evidence": {"same_day": true, "patch_ids": ["38c2659d2d49792d4d5949aa17d94ffe", "e89d49ef181d2ea31edebe391d6585af"], "statement_hash": "315810c8210fbe84750562b49ec74df0b04879406e3b1c8ac94da02ffc01dcfd"}, "url": "/docs/compare/?release=16.10#16.10-b77303bab24eb5bc", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "5bd246584254c738e7c72084c1a50eb1", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "避免在跨表约束更新期间的断言失败", "evidence": {"same_day": true, "patch_ids": ["38c2659d2d49792d4d5949aa17d94ffe", "e89d49ef181d2ea31edebe391d6585af"], "statement_hash": "315810c8210fbe84750562b49ec74df0b04879406e3b1c8ac94da02ffc01dcfd"}, "url": "/docs/compare/?release=15.14#15.14-a052ebd72b72256a", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "7dbbc995359387cd322a74bf2d8ed14e", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "避免在跨表约束更新期间的断言失败", "evidence": {"same_day": true, "patch_ids": ["38c2659d2d49792d4d5949aa17d94ffe", "e89d49ef181d2ea31edebe391d6585af"], "statement_hash": "315810c8210fbe84750562b49ec74df0b04879406e3b1c8ac94da02ffc01dcfd"}, "url": "/docs/compare/?release=13.22#13.22-dabbb36f105c08be", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-08438a0e7ddef201", "cves": [], "html": "<p>移除在 <code>PortalRunMulti()</code> 结束时必须已确定命令标签的错误断言（Álvaro Herrera）<a href=\"https://postgr.es/c/b9a896828\">§</a></p>\n<p>在边界情况下（例如空的预备语句）此断言会失败。</p>", "text": "移除在 PortalRunMulti() 结束时必须已确定命令标签的错误断言（Álvaro Herrera）§ 在边界情况下（例如空的预备语句）此断言会失败。", "title": "移除在 PortalRunMulti() 结束时必须已确定命令标签的错误断言", "commits": ["b9a896828"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "fe09657f462d5a4923a0be7fd8b0917efb60d77030198064a29807c9d3740df9", "section_path": ["变更"], "commit_groups": [["0c466f5e0", "43cd85962", "4871c1e9c", "b8926a5b4", "b9a896828", "c2720ac60", "e0d3f3cfb"]], "identity_text": "Remove faulty assertion that a command tag must have been determined by the end of PortalRunMulti() (Álvaro Herrera) This failed in edge cases such as an empty prepared statement.", "commit_aliases": ["0c466f5e0", "43cd85962", "4871c1e9c", "b8926a5b4", "b9a896828", "c2720ac60", "e0d3f3cfb"], "source_commits": ["b9a896828"], "source_entry_id": "14.19/changes/024", "db_id": "29f00b03931c829d5d1fc33a545d7f2e", "patch_ids": ["89e3c2af85b43ec9e5c0880c832f7201"], "statement_hash": "f14c48b3304341a11f41f6a2913ce37ca10201d8817278f900dbd5be5eaf588e", "relations": [{"rule": 2, "type": "equivalent", "target": "3088f95cab6d048c5c9eaeab66d96284", "evidence": {"same_day": true, "patch_ids": ["89e3c2af85b43ec9e5c0880c832f7201"], "statement_hash": "f14c48b3304341a11f41f6a2913ce37ca10201d8817278f900dbd5be5eaf588e"}}, {"rule": 2, "type": "equivalent", "target": "69acaf7eb64fd7b09e33dc034c31117b", "evidence": {"same_day": true, "patch_ids": ["89e3c2af85b43ec9e5c0880c832f7201"], "statement_hash": "f14c48b3304341a11f41f6a2913ce37ca10201d8817278f900dbd5be5eaf588e"}}, {"rule": 2, "type": "equivalent", "target": "c19274d77bf45d3de069b4cb3f2b9558", "evidence": {"same_day": true, "patch_ids": ["89e3c2af85b43ec9e5c0880c832f7201"], "statement_hash": "f14c48b3304341a11f41f6a2913ce37ca10201d8817278f900dbd5be5eaf588e"}}, {"rule": 2, "type": "equivalent", "target": "d9147fb696a093f4982942c7e9837f5c", "evidence": {"same_day": true, "patch_ids": ["89e3c2af85b43ec9e5c0880c832f7201"], "statement_hash": "f14c48b3304341a11f41f6a2913ce37ca10201d8817278f900dbd5be5eaf588e"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "69acaf7eb64fd7b09e33dc034c31117b", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "移除在 PortalRunMulti() 结束时必须已确定命令标签的错误断言", "evidence": {"same_day": true, "patch_ids": ["89e3c2af85b43ec9e5c0880c832f7201"], "statement_hash": "f14c48b3304341a11f41f6a2913ce37ca10201d8817278f900dbd5be5eaf588e"}, "url": "/docs/compare/?release=17.6#17.6-ff92c9676b1b3d1b", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "3088f95cab6d048c5c9eaeab66d96284", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "移除在 PortalRunMulti() 结束时必须已确定命令标签的错误断言", "evidence": {"same_day": true, "patch_ids": ["89e3c2af85b43ec9e5c0880c832f7201"], "statement_hash": "f14c48b3304341a11f41f6a2913ce37ca10201d8817278f900dbd5be5eaf588e"}, "url": "/docs/compare/?release=16.10#16.10-68b74c0ee8871660", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "d9147fb696a093f4982942c7e9837f5c", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "移除在 PortalRunMulti() 结束时必须已确定命令标签的错误断言", "evidence": {"same_day": true, "patch_ids": ["89e3c2af85b43ec9e5c0880c832f7201"], "statement_hash": "f14c48b3304341a11f41f6a2913ce37ca10201d8817278f900dbd5be5eaf588e"}, "url": "/docs/compare/?release=15.14#15.14-9a073b50a73fe134", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "c19274d77bf45d3de069b4cb3f2b9558", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "移除在 PortalRunMulti() 结束时必须已确定命令标签的错误断言", "evidence": {"same_day": true, "patch_ids": ["89e3c2af85b43ec9e5c0880c832f7201"], "statement_hash": "f14c48b3304341a11f41f6a2913ce37ca10201d8817278f900dbd5be5eaf588e"}, "url": "/docs/compare/?release=13.22#13.22-c04ee227e6028abd", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-940a02486cedd708", "cves": [], "html": "<p>恢复在并行模式下运行 PL/pgSQL 表达式的能力（Dipesh Dhameliya）<a href=\"https://postgr.es/c/602c91cf2\">§</a></p>\n<p>PL/pgSQL 中<span>“<span>表达式</span>”</span>的概念非常广泛，涵盖任何返回单列且不超过一行的 SQL <code>SELECT</code> 查询。因此在某些情况下，例如计算聚合函数时，查询涉及大量工作，使用并行工作进程来运行它会很有用。这以前是可能的，但之前的一个 bug 修复无意中禁用了它。</p>", "text": "恢复在并行模式下运行 PL/pgSQL 表达式的能力（Dipesh Dhameliya）§ PL/pgSQL 中“表达式”的概念非常广泛，涵盖任何返回单列且不超过一行的 SQL SELECT 查询。因此在某些情况下，例如计算聚合函数时，查询涉及大量工作，使用并行工作进程来运行它会很有用。这以前是可能的，但之前的一个 bug 修复无意中禁用了它。", "title": "恢复在并行模式下运行 PL/pgSQL 表达式的能力", "commits": ["602c91cf2"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "e3399ac84a019851dcad9ee5c0b095b6301d7a732b034ca30d279f0c53729d20", "section_path": ["变更"], "commit_groups": [["3bbc1c4a7", "440c5ee20", "602c91cf2", "87b05fdc7", "a553a2289", "ae693c0bf", "c65c36ab5"]], "identity_text": "Restore the ability to run PL/pgSQL expressions in parallel (Dipesh Dhameliya) PL/pgSQL's notion of an expression is very broad, encompassing any SQL SELECT query that returns a single column and no more than one row. So there are cases, for example evaluation of an aggregate function, where the query involves significant work and it'd be useful to run it with parallel workers. This used to be possible, but a previous bug fix unintentionally disabled it.", "commit_aliases": ["3bbc1c4a7", "440c5ee20", "602c91cf2", "87b05fdc7", "a553a2289", "ae693c0bf", "c65c36ab5"], "source_commits": ["602c91cf2"], "source_entry_id": "14.19/changes/025", "db_id": "6dd8c99c246c1d9c0515a9af0c3ac00a", "patch_ids": ["d7e6562b2d2fd7593124d895c1e87b80"], "statement_hash": "c38db496d6c1235185a7cb01749e0d8b1737c7f23274b76294f84debf8f4cb50", "relations": [{"rule": 2, "type": "equivalent", "target": "4e59880d0211330ae7869ed21f4fb6f8", "evidence": {"same_day": true, "patch_ids": ["d7e6562b2d2fd7593124d895c1e87b80"], "statement_hash": "c38db496d6c1235185a7cb01749e0d8b1737c7f23274b76294f84debf8f4cb50"}}, {"rule": 2, "type": "equivalent", "target": "58a0d61da22f0a31faaf752756bf48d5", "evidence": {"same_day": true, "patch_ids": ["d7e6562b2d2fd7593124d895c1e87b80"], "statement_hash": "c38db496d6c1235185a7cb01749e0d8b1737c7f23274b76294f84debf8f4cb50"}}, {"rule": 2, "type": "equivalent", "target": "7fe535a252ea59534d5d49967f105f6c", "evidence": {"same_day": true, "patch_ids": ["d7e6562b2d2fd7593124d895c1e87b80"], "statement_hash": "c38db496d6c1235185a7cb01749e0d8b1737c7f23274b76294f84debf8f4cb50"}}, {"rule": 2, "type": "equivalent", "target": "c6c6cb74b6043603c2add00554d38bf6", "evidence": {"same_day": true, "patch_ids": ["d7e6562b2d2fd7593124d895c1e87b80"], "statement_hash": "c38db496d6c1235185a7cb01749e0d8b1737c7f23274b76294f84debf8f4cb50"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "c6c6cb74b6043603c2add00554d38bf6", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "恢复在并行模式下运行 PL/pgSQL 表达式的能力", "evidence": {"same_day": true, "patch_ids": ["d7e6562b2d2fd7593124d895c1e87b80"], "statement_hash": "c38db496d6c1235185a7cb01749e0d8b1737c7f23274b76294f84debf8f4cb50"}, "url": "/docs/compare/?release=17.6#17.6-f7f59c82bc768d0f", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "58a0d61da22f0a31faaf752756bf48d5", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "恢复在并行模式下运行 PL/pgSQL 表达式的能力", "evidence": {"same_day": true, "patch_ids": ["d7e6562b2d2fd7593124d895c1e87b80"], "statement_hash": "c38db496d6c1235185a7cb01749e0d8b1737c7f23274b76294f84debf8f4cb50"}, "url": "/docs/compare/?release=16.10#16.10-3a49a3cf217e1b81", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "4e59880d0211330ae7869ed21f4fb6f8", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "恢复在并行模式下运行 PL/pgSQL 表达式的能力", "evidence": {"same_day": true, "patch_ids": ["d7e6562b2d2fd7593124d895c1e87b80"], "statement_hash": "c38db496d6c1235185a7cb01749e0d8b1737c7f23274b76294f84debf8f4cb50"}, "url": "/docs/compare/?release=15.14#15.14-6d8ebac5bfc94463", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "7fe535a252ea59534d5d49967f105f6c", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "恢复在并行模式下运行 PL/pgSQL 表达式的能力", "evidence": {"same_day": true, "patch_ids": ["d7e6562b2d2fd7593124d895c1e87b80"], "statement_hash": "c38db496d6c1235185a7cb01749e0d8b1737c7f23274b76294f84debf8f4cb50"}, "url": "/docs/compare/?release=13.22#13.22-5a92d5afeb26ff20", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-a6725b33673c4dfd", "cves": [], "html": "<p>修复 PL/Python 错误报告中的边缘场景资源泄漏（Tom Lane）<a href=\"https://postgr.es/c/7559a16e2\">§</a> <a href=\"https://postgr.es/c/6f724fcf8\">§</a></p>\n<p>在报告 Python 错误时发生内存耗尽失败，可能导致无法减少 Python 对象的引用计数，从而造成贯穿整个会话生命周期的内存泄漏。</p>", "text": "修复 PL/Python 错误报告中的边缘场景资源泄漏（Tom Lane）§ § 在报告 Python 错误时发生内存耗尽失败，可能导致无法减少 Python 对象的引用计数，从而造成贯穿整个会话生命周期的内存泄漏。", "title": "修复 PL/Python 错误报告中的边缘场景资源泄漏", "commits": ["6f724fcf8", "7559a16e2"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "ecf379bc6a4f19cd8a8471a82a01ef328862d4f529961548f0ed262ceb74b28a", "section_path": ["变更"], "commit_groups": [["1c78d5553", "31a3a15fa", "5c7fd5976", "7559a16e2", "b56a92651", "c6f7f11d8"], ["4672b6223", "6f724fcf8", "93aca1246", "b898bb2a7", "d4556f592", "ecc8fd2b7"]], "identity_text": "Fix edge-case resource leaks in PL/Python error reporting (Tom Lane) An out-of-memory failure while reporting an error from Python could result in failure to drop reference counts on Python objects, leading to session-lifespan memory leakage.", "commit_aliases": ["1c78d5553", "31a3a15fa", "4672b6223", "5c7fd5976", "6f724fcf8", "7559a16e2", "93aca1246", "b56a92651", "b898bb2a7", "c6f7f11d8", "d4556f592", "ecc8fd2b7"], "source_commits": ["31a3a15fa", "d4556f592"], "source_entry_id": "14.19/changes/026", "db_id": "a59f3a9c24e176910d3bc6430f5b6975", "patch_ids": ["5cf11831d4da5ade7bf49e7df6741c06", "c8f27688ed48f73fa477355451a4d409"], "statement_hash": "f75869cb85facb2f36714af3f1d39c5deaf952daf8dd097d0129d12e6377a349", "relations": [{"rule": 2, "type": "equivalent", "target": "0468697c8222104ee239201be4e72851", "evidence": {"same_day": true, "patch_ids": ["5cf11831d4da5ade7bf49e7df6741c06", "c8f27688ed48f73fa477355451a4d409"], "statement_hash": "f75869cb85facb2f36714af3f1d39c5deaf952daf8dd097d0129d12e6377a349"}}, {"rule": 2, "type": "equivalent", "target": "121c4887d61f8657a3464fef4ba2fb25", "evidence": {"same_day": true, "patch_ids": ["5cf11831d4da5ade7bf49e7df6741c06", "c8f27688ed48f73fa477355451a4d409"], "statement_hash": "f75869cb85facb2f36714af3f1d39c5deaf952daf8dd097d0129d12e6377a349"}}, {"rule": 2, "type": "equivalent", "target": "7bd9f9ced63230b2f77829dd09883005", "evidence": {"same_day": true, "patch_ids": ["5cf11831d4da5ade7bf49e7df6741c06", "c8f27688ed48f73fa477355451a4d409"], "statement_hash": "f75869cb85facb2f36714af3f1d39c5deaf952daf8dd097d0129d12e6377a349"}}, {"rule": 2, "type": "equivalent", "target": "d8d7c303d6e9004f3000a0044f0af608", "evidence": {"same_day": true, "patch_ids": ["5cf11831d4da5ade7bf49e7df6741c06", "c8f27688ed48f73fa477355451a4d409"], "statement_hash": "f75869cb85facb2f36714af3f1d39c5deaf952daf8dd097d0129d12e6377a349"}}], "version": "14.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "0468697c8222104ee239201be4e72851", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "修复 PL/Python 错误报告中的边缘场景资源泄漏", "evidence": {"same_day": true, "patch_ids": ["5cf11831d4da5ade7bf49e7df6741c06", "c8f27688ed48f73fa477355451a4d409"], "statement_hash": "f75869cb85facb2f36714af3f1d39c5deaf952daf8dd097d0129d12e6377a349"}, "url": "/docs/compare/?release=17.6#17.6-a6725b33673c4dfd", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "121c4887d61f8657a3464fef4ba2fb25", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "修复 PL/Python 错误报告中的边缘场景资源泄漏", "evidence": {"same_day": true, "patch_ids": ["5cf11831d4da5ade7bf49e7df6741c06", "c8f27688ed48f73fa477355451a4d409"], "statement_hash": "f75869cb85facb2f36714af3f1d39c5deaf952daf8dd097d0129d12e6377a349"}, "url": "/docs/compare/?release=16.10#16.10-a6725b33673c4dfd", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "7bd9f9ced63230b2f77829dd09883005", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "修复 PL/Python 错误报告中的边缘场景资源泄漏", "evidence": {"same_day": true, "patch_ids": ["5cf11831d4da5ade7bf49e7df6741c06", "c8f27688ed48f73fa477355451a4d409"], "statement_hash": "f75869cb85facb2f36714af3f1d39c5deaf952daf8dd097d0129d12e6377a349"}, "url": "/docs/compare/?release=15.14#15.14-a6725b33673c4dfd", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "d8d7c303d6e9004f3000a0044f0af608", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "修复 PL/Python 错误报告中的边界情况资源泄漏", "evidence": {"same_day": true, "patch_ids": ["5cf11831d4da5ade7bf49e7df6741c06", "c8f27688ed48f73fa477355451a4d409"], "statement_hash": "f75869cb85facb2f36714af3f1d39c5deaf952daf8dd097d0129d12e6377a349"}, "url": "/docs/compare/?release=13.22#13.22-413a0c641b1e54a6", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-00c22d6bb1c18fb5", "cves": [], "html": "<p>修复 <span>libpq</span> 的 <code>PQport()</code> 函数，使其除非传入的连接为 NULL，否则永远不返回 NULL（Daniele Varrazzo）<a href=\"https://postgr.es/c/d5cba7746\">§</a></p>\n<p>这是文档中记录的行为，但最近的 <span>libpq</span> 版本在用户未提供端口规范的某些情况下会返回 NULL。恢复到我们历史上在此类情况下返回空字符串的行为。（v18 及更高版本将返回编译时的默认端口号，通常是 <code>\"5432\"</code>。）</p>", "text": "修复 libpq 的 PQport() 函数，使其除非传入的连接为 NULL，否则永远不返回 NULL（Daniele Varrazzo）§ 这是文档中记录的行为，但最近的 libpq 版本在用户未提供端口规范的某些情况下会返回 NULL。恢复到我们历史上在此类情况下返回空字符串的行为。（v18 及更高版本将返回编译时的默认端口号，通常是 \"5432\"。）", "title": "修复 libpq 的 PQport() 函数，使其除非传入的连接为 NULL，否则永远不返回 NULL", "commits": ["d5cba7746"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "e34f6be14754357b31d8eead34006d1695ede68e47a52c998cd3d2abff5abe9f", "section_path": ["变更"], "commit_groups": [["009c20a3d", "3f10d2b66", "9dcd1aa81", "a372a64db", "bfa9b25c9", "d5cba7746", "daf9bdc47"]], "identity_text": "Fix libpq's PQport() function to never return NULL unless the passed connection is NULL (Daniele Varrazzo) This is the documented behavior, but recent libpq versions would return NULL in some cases where the user had not provided a port specification. Revert to our historical behavior of returning an empty string in such cases. (v18 and later will return the compiled-in default port number, typically \"5432\", instead.)", "commit_aliases": ["009c20a3d", "3f10d2b66", "9dcd1aa81", "a372a64db", "bfa9b25c9", "d5cba7746", "daf9bdc47"], "source_commits": ["d5cba7746"], "source_entry_id": "14.19/changes/027", "db_id": "3f7263fdfe881eab78910c67c7c33995", "patch_ids": ["22b7cc963ab9c3434a3f92af3e7e491f"], "statement_hash": "0715dd514d4cf2f473cfc9541c1a0e89464f88a6e4341036779b8eb7a1a58bdf", "relations": [{"rule": 2, "type": "equivalent", "target": "09fb37e7186e091d0fdbe899fe9c8b47", "evidence": {"same_day": true, "patch_ids": ["22b7cc963ab9c3434a3f92af3e7e491f"], "statement_hash": "0715dd514d4cf2f473cfc9541c1a0e89464f88a6e4341036779b8eb7a1a58bdf"}}, {"rule": 2, "type": "equivalent", "target": "6f32c58493e912039a79042f79270c28", "evidence": {"same_day": true, "patch_ids": ["22b7cc963ab9c3434a3f92af3e7e491f"], "statement_hash": "0715dd514d4cf2f473cfc9541c1a0e89464f88a6e4341036779b8eb7a1a58bdf"}}, {"rule": 2, "type": "equivalent", "target": "a50fd7ae7b936d1943609dbcdfcb60fb", "evidence": {"same_day": true, "patch_ids": ["22b7cc963ab9c3434a3f92af3e7e491f"], "statement_hash": "0715dd514d4cf2f473cfc9541c1a0e89464f88a6e4341036779b8eb7a1a58bdf"}}, {"rule": 2, "type": "equivalent", "target": "dc7a48a895783ea661b076f328b1fe70", "evidence": {"same_day": true, "patch_ids": ["22b7cc963ab9c3434a3f92af3e7e491f"], "statement_hash": "0715dd514d4cf2f473cfc9541c1a0e89464f88a6e4341036779b8eb7a1a58bdf"}}], "version": "14.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "6f32c58493e912039a79042f79270c28", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "修复 libpq 的 PQport() 函数，使其除非传入的连接为 NULL，否则永远不返回 NULL", "evidence": {"same_day": true, "patch_ids": ["22b7cc963ab9c3434a3f92af3e7e491f"], "statement_hash": "0715dd514d4cf2f473cfc9541c1a0e89464f88a6e4341036779b8eb7a1a58bdf"}, "url": "/docs/compare/?release=17.6#17.6-419aac3386b26d61", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "dc7a48a895783ea661b076f328b1fe70", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "修复 libpq 的 PQport() 函数，使其除非传入的连接为 NULL，否则永远不返回 NULL", "evidence": {"same_day": true, "patch_ids": ["22b7cc963ab9c3434a3f92af3e7e491f"], "statement_hash": "0715dd514d4cf2f473cfc9541c1a0e89464f88a6e4341036779b8eb7a1a58bdf"}, "url": "/docs/compare/?release=16.10#16.10-bd3afc47d44bfb52", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "a50fd7ae7b936d1943609dbcdfcb60fb", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "修复 libpq 的 PQport() 函数，使其除非传入的连接为 NULL，否则永远不返回 NULL", "evidence": {"same_day": true, "patch_ids": ["22b7cc963ab9c3434a3f92af3e7e491f"], "statement_hash": "0715dd514d4cf2f473cfc9541c1a0e89464f88a6e4341036779b8eb7a1a58bdf"}, "url": "/docs/compare/?release=15.14#15.14-c409c31a7a604dde", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "09fb37e7186e091d0fdbe899fe9c8b47", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "修复 libpq 的 PQport() 函数，使其除非传入的连接为 NULL，否则永远不返回 NULL", "evidence": {"same_day": true, "patch_ids": ["22b7cc963ab9c3434a3f92af3e7e491f"], "statement_hash": "0715dd514d4cf2f473cfc9541c1a0e89464f88a6e4341036779b8eb7a1a58bdf"}, "url": "/docs/compare/?release=13.22#13.22-90c67ed3f983f716", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-54c912da6b719fe3", "cves": [], "html": "<p>避免当 GSSAPI 认证需要大于 16kB 的数据包时发生失败（Jacob Champion, Tom Lane）<a href=\"https://postgr.es/c/8b0aa7a6b\">§</a></p>\n<p>属于许多 AD 组的 Active Directory 用户需要更大的认证数据包。这个限制表现为连接失败，并伴随难以理解的错误消息，典型如 <span>“<span>GSSAPI context establishment error: The routine must be called again to complete its function: Unknown error</span>”</span>。</p>", "text": "避免当 GSSAPI 认证需要大于 16kB 的数据包时发生失败（Jacob Champion, Tom Lane）§ 属于许多 AD 组的 Active Directory 用户需要更大的认证数据包。这个限制表现为连接失败，并伴随难以理解的错误消息，典型如 “GSSAPI context establishment error: The routine must be called again to complete its function: Unknown error”。", "title": "避免当 GSSAPI 认证需要大于 16kB 的数据包时发生失败", "commits": ["8b0aa7a6b"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "1fec0f59608d19ad2350df481c320e5e822813d51eba5f37e65147db1e45f890", "section_path": ["变更"], "commit_groups": [["39b1d1907", "8b0aa7a6b", "a7da7914c", "c81cdffa1", "ca70ee6ed", "d98cefe11"]], "identity_text": "Avoid failure when GSSAPI authentication requires packets larger than 16kB (Jacob Champion, Tom Lane) Larger authentication packets are needed for Active Directory users who belong to many AD groups. This limitation manifested in connection failures with unintelligible error messages, typically GSSAPI context establishment error: The routine must be called again to complete its function: Unknown error.", "commit_aliases": ["39b1d1907", "8b0aa7a6b", "a7da7914c", "c81cdffa1", "ca70ee6ed", "d98cefe11"], "source_commits": ["a7da7914c"], "source_entry_id": "14.19/changes/028", "db_id": "c82e55570034a30cbd865d2af345ca08", "patch_ids": ["9c20b9b4b2c08812604c728f7be2d15b"], "statement_hash": "8ad10d845dd2a1af9acb44e8c0342e6dc940ebc316bfde0b3a2aa80cf2cb7cb8", "relations": [{"rule": 2, "type": "equivalent", "target": "7300bf02d776a30a653f81d4f6a5a388", "evidence": {"same_day": true, "patch_ids": ["9c20b9b4b2c08812604c728f7be2d15b"], "statement_hash": "8ad10d845dd2a1af9acb44e8c0342e6dc940ebc316bfde0b3a2aa80cf2cb7cb8"}}, {"rule": 2, "type": "equivalent", "target": "7820aee942c64c2a8567cfaf5be7fa18", "evidence": {"same_day": true, "patch_ids": ["9c20b9b4b2c08812604c728f7be2d15b"], "statement_hash": "8ad10d845dd2a1af9acb44e8c0342e6dc940ebc316bfde0b3a2aa80cf2cb7cb8"}}, {"rule": 2, "type": "equivalent", "target": "9e00b81c508cc2a7f6f923228653c3a4", "evidence": {"same_day": true, "patch_ids": ["9c20b9b4b2c08812604c728f7be2d15b"], "statement_hash": "8ad10d845dd2a1af9acb44e8c0342e6dc940ebc316bfde0b3a2aa80cf2cb7cb8"}}, {"rule": 2, "type": "equivalent", "target": "b27004bcb4025cb1b78f1c6da56dfa0b", "evidence": {"same_day": true, "patch_ids": ["9c20b9b4b2c08812604c728f7be2d15b"], "statement_hash": "8ad10d845dd2a1af9acb44e8c0342e6dc940ebc316bfde0b3a2aa80cf2cb7cb8"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "b27004bcb4025cb1b78f1c6da56dfa0b", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "避免当 GSSAPI 认证需要大于 16kB 的数据包时发生失败", "evidence": {"same_day": true, "patch_ids": ["9c20b9b4b2c08812604c728f7be2d15b"], "statement_hash": "8ad10d845dd2a1af9acb44e8c0342e6dc940ebc316bfde0b3a2aa80cf2cb7cb8"}, "url": "/docs/compare/?release=17.6#17.6-54c912da6b719fe3", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "9e00b81c508cc2a7f6f923228653c3a4", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "避免当 GSSAPI 认证需要大于 16kB 的数据包时发生失败", "evidence": {"same_day": true, "patch_ids": ["9c20b9b4b2c08812604c728f7be2d15b"], "statement_hash": "8ad10d845dd2a1af9acb44e8c0342e6dc940ebc316bfde0b3a2aa80cf2cb7cb8"}, "url": "/docs/compare/?release=16.10#16.10-54c912da6b719fe3", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "7300bf02d776a30a653f81d4f6a5a388", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "避免当 GSSAPI 认证需要大于 16kB 的数据包时发生失败", "evidence": {"same_day": true, "patch_ids": ["9c20b9b4b2c08812604c728f7be2d15b"], "statement_hash": "8ad10d845dd2a1af9acb44e8c0342e6dc940ebc316bfde0b3a2aa80cf2cb7cb8"}, "url": "/docs/compare/?release=15.14#15.14-54c912da6b719fe3", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "7820aee942c64c2a8567cfaf5be7fa18", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "避免当 GSSAPI 认证需要大于 16kB 的数据包时出现失败", "evidence": {"same_day": true, "patch_ids": ["9c20b9b4b2c08812604c728f7be2d15b"], "statement_hash": "8ad10d845dd2a1af9acb44e8c0342e6dc940ebc316bfde0b3a2aa80cf2cb7cb8"}, "url": "/docs/compare/?release=13.22#13.22-1886d08a644dc5f5", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-9af21c705af4d5f8", "cves": [], "html": "<p>修复 SSL 和 GSSAPI 数据传输中依赖时序的失败问题（Tom Lane）<a href=\"https://postgr.es/c/30e0d9ee9\">§</a></p>\n<p>在非阻塞模式下使用 SSL 或 GSSAPI 加密时，<span>libpq</span> 有时会因 <span>“<span>SSL error: bad length</span>”</span> 或 <span>“<span>GSSAPI caller failed to retransmit all data needing to be retried</span>”</span> 而失败。</p>", "text": "修复 SSL 和 GSSAPI 数据传输中依赖时序的失败问题（Tom Lane）§ 在非阻塞模式下使用 SSL 或 GSSAPI 加密时，libpq 有时会因 “SSL error: bad length” 或 “GSSAPI caller failed to retransmit all data needing to be retried” 而失败。", "title": "修复 SSL 和 GSSAPI 数据传输中依赖时序的失败问题", "commits": ["30e0d9ee9"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "279802734d2f74f5bf2ed0b4408af9b1f3f16eae5ffe73ff94759400b2938e19", "section_path": ["变更"], "commit_groups": [["0703c9385", "137935bd1", "30e0d9ee9", "3f37400cf", "6a4d93eda", "f09fea386"]], "identity_text": "Fix timing-dependent failures in SSL and GSSAPI data transmission (Tom Lane) When using SSL or GSSAPI encryption in non-blocking mode, libpq sometimes failed with SSL error: bad length or GSSAPI caller failed to retransmit all data needing to be retried.", "commit_aliases": ["0703c9385", "137935bd1", "30e0d9ee9", "3f37400cf", "6a4d93eda", "f09fea386"], "source_commits": ["0703c9385"], "source_entry_id": "14.19/changes/029", "db_id": "e364d96f10953f914f581ed71ca42059", "patch_ids": ["e183c726a0fffa9d700ae85c61737795"], "statement_hash": "015f735f627c918db73975bc3adfcd018dac06b111e2255f97539dcc28ac660e", "relations": [{"rule": 2, "type": "equivalent", "target": "04840f3ea21539bdfa095da3739fcb25", "evidence": {"same_day": true, "patch_ids": ["e183c726a0fffa9d700ae85c61737795"], "statement_hash": "015f735f627c918db73975bc3adfcd018dac06b111e2255f97539dcc28ac660e"}}, {"rule": 2, "type": "equivalent", "target": "1d6ac0ef9bac20774b2c00cab64bd3be", "evidence": {"same_day": true, "patch_ids": ["e183c726a0fffa9d700ae85c61737795"], "statement_hash": "015f735f627c918db73975bc3adfcd018dac06b111e2255f97539dcc28ac660e"}}, {"rule": 2, "type": "equivalent", "target": "d010cc5adac641dffac3aed8ba5f7474", "evidence": {"same_day": true, "patch_ids": ["e183c726a0fffa9d700ae85c61737795"], "statement_hash": "015f735f627c918db73975bc3adfcd018dac06b111e2255f97539dcc28ac660e"}}, {"rule": 2, "type": "equivalent", "target": "de0fc953d8bee77e15871a1af804690e", "evidence": {"same_day": true, "patch_ids": ["e183c726a0fffa9d700ae85c61737795"], "statement_hash": "015f735f627c918db73975bc3adfcd018dac06b111e2255f97539dcc28ac660e"}}], "version": "14.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "d010cc5adac641dffac3aed8ba5f7474", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "修复 SSL 和 GSSAPI 数据传输中依赖时序的失败问题", "evidence": {"same_day": true, "patch_ids": ["e183c726a0fffa9d700ae85c61737795"], "statement_hash": "015f735f627c918db73975bc3adfcd018dac06b111e2255f97539dcc28ac660e"}, "url": "/docs/compare/?release=17.6#17.6-9af21c705af4d5f8", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "04840f3ea21539bdfa095da3739fcb25", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "修复 SSL 和 GSSAPI 数据传输中依赖时序的失败问题", "evidence": {"same_day": true, "patch_ids": ["e183c726a0fffa9d700ae85c61737795"], "statement_hash": "015f735f627c918db73975bc3adfcd018dac06b111e2255f97539dcc28ac660e"}, "url": "/docs/compare/?release=16.10#16.10-9af21c705af4d5f8", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "de0fc953d8bee77e15871a1af804690e", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "修复 SSL 和 GSSAPI 数据传输中依赖时序的失败问题", "evidence": {"same_day": true, "patch_ids": ["e183c726a0fffa9d700ae85c61737795"], "statement_hash": "015f735f627c918db73975bc3adfcd018dac06b111e2255f97539dcc28ac660e"}, "url": "/docs/compare/?release=15.14#15.14-9af21c705af4d5f8", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "1d6ac0ef9bac20774b2c00cab64bd3be", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "修复 SSL 和 GSSAPI 数据传输中的时序相关故障", "evidence": {"same_day": true, "patch_ids": ["e183c726a0fffa9d700ae85c61737795"], "statement_hash": "015f735f627c918db73975bc3adfcd018dac06b111e2255f97539dcc28ac660e"}, "url": "/docs/compare/?release=13.22#13.22-f6bbf052847a01b1", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-3ad342512bbab551", "cves": [], "html": "<p>避免在 <span>ecpg</span> 应用程序中连接查找时的空指针解引用（Aleksander Alekseev）<a href=\"https://postgr.es/c/408fe659a\">§</a></p>\n<p>这种情况只有在应用程序同时存在命名连接和未命名连接时才会发生。</p>", "text": "避免在 ecpg 应用程序中连接查找时的空指针解引用（Aleksander Alekseev）§ 这种情况只有在应用程序同时存在命名连接和未命名连接时才会发生。", "title": "避免在 ecpg 应用程序中连接查找时的空指针解引用", "commits": ["408fe659a"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "930d495610fa28533b712a355e2a9e1602f18f16e5daf5576b3439217d6eafc7", "section_path": ["变更"], "commit_groups": [["0123922f8", "0ded7615d", "1b8bbee05", "2805e1c1e", "313d3102f", "408fe659a", "c934d5673"]], "identity_text": "Avoid null-pointer dereference during connection lookup in ecpg applications (Aleksander Alekseev) The case could occur only if the application has some connections that are named and some that are not.", "commit_aliases": ["0123922f8", "0ded7615d", "1b8bbee05", "2805e1c1e", "313d3102f", "408fe659a", "c934d5673"], "source_commits": ["408fe659a"], "source_entry_id": "14.19/changes/030", "db_id": "74f7fa790d8f233acb9e91bb461d382d", "patch_ids": ["7e30860afd34973682c127264cf991de"], "statement_hash": "477d5885e1c686592690701f5f4bac9c9e9a9feca03c0681f6d99864acb0b757", "relations": [{"rule": 2, "type": "equivalent", "target": "0e5689dc80c41e5a07f881c3214651be", "evidence": {"same_day": true, "patch_ids": ["7e30860afd34973682c127264cf991de"], "statement_hash": "477d5885e1c686592690701f5f4bac9c9e9a9feca03c0681f6d99864acb0b757"}}, {"rule": 2, "type": "equivalent", "target": "b1e3dd4bb95eeb22b39aa772f9b7733f", "evidence": {"same_day": true, "patch_ids": ["7e30860afd34973682c127264cf991de"], "statement_hash": "477d5885e1c686592690701f5f4bac9c9e9a9feca03c0681f6d99864acb0b757"}}, {"rule": 2, "type": "equivalent", "target": "bd611f9600cb9924f8bce02d7d4c0977", "evidence": {"same_day": true, "patch_ids": ["7e30860afd34973682c127264cf991de"], "statement_hash": "477d5885e1c686592690701f5f4bac9c9e9a9feca03c0681f6d99864acb0b757"}}, {"rule": 2, "type": "equivalent", "target": "ee9f5bbf431109d52dafe780173275ce", "evidence": {"same_day": true, "patch_ids": ["7e30860afd34973682c127264cf991de"], "statement_hash": "477d5885e1c686592690701f5f4bac9c9e9a9feca03c0681f6d99864acb0b757"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "0e5689dc80c41e5a07f881c3214651be", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "避免在 ecpg 应用程序中连接查找时的空指针解引用", "evidence": {"same_day": true, "patch_ids": ["7e30860afd34973682c127264cf991de"], "statement_hash": "477d5885e1c686592690701f5f4bac9c9e9a9feca03c0681f6d99864acb0b757"}, "url": "/docs/compare/?release=17.6#17.6-ace06bba210ed921", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "bd611f9600cb9924f8bce02d7d4c0977", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "避免在 ecpg 应用程序中连接查找时的空指针解引用", "evidence": {"same_day": true, "patch_ids": ["7e30860afd34973682c127264cf991de"], "statement_hash": "477d5885e1c686592690701f5f4bac9c9e9a9feca03c0681f6d99864acb0b757"}, "url": "/docs/compare/?release=16.10#16.10-436c939fcf191f10", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "ee9f5bbf431109d52dafe780173275ce", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "避免在 ecpg 应用程序中连接查找时的空指针解引用", "evidence": {"same_day": true, "patch_ids": ["7e30860afd34973682c127264cf991de"], "statement_hash": "477d5885e1c686592690701f5f4bac9c9e9a9feca03c0681f6d99864acb0b757"}, "url": "/docs/compare/?release=15.14#15.14-3f9dc3f7e6fef39f", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "b1e3dd4bb95eeb22b39aa772f9b7733f", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "避免在 ecpg 应用程序中连接查找时的空指针解引用", "evidence": {"same_day": true, "patch_ids": ["7e30860afd34973682c127264cf991de"], "statement_hash": "477d5885e1c686592690701f5f4bac9c9e9a9feca03c0681f6d99864acb0b757"}, "url": "/docs/compare/?release=13.22#13.22-9a92c3e1fe452c94", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-145c8c4131c28fc2", "cves": [], "html": "<p>改进 <span>psql</span> 对 <code>COPY</code> 和 <code>\\copy</code> 选项的 tab 补全（Atsushi Torikoshi）<a href=\"https://postgr.es/c/0514616f0\">§</a></p>\n<p>对 <code>COPY FROM</code> 和 <code>COPY TO</code> 提供了相同的补全建议，尽管某些选项仅对其中一种情况有效。区分这些情况以提供更准确的建议。</p>", "text": "改进 psql 对 COPY 和 \\copy 选项的 tab 补全（Atsushi Torikoshi）§ 对 COPY FROM 和 COPY TO 提供了相同的补全建议，尽管某些选项仅对其中一种情况有效。区分这些情况以提供更准确的建议。", "title": "改进 psql 对 COPY 和 \\copy 选项的 tab 补全", "commits": ["0514616f0"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "e314f70ffe4e8e65b154675733d18bee84a4276fa2838698298feeed06ea912e", "section_path": ["变更"], "commit_groups": [["0514616f0", "765a4c94c", "c1c6169eb", "d69836b13", "e3584e457", "f5a987c0e"]], "identity_text": "Improve psql's tab completion for COPY and \\copy options (Atsushi Torikoshi) The same completions were offered for both COPY FROM and COPY TO, although some options are only valid for one case or the other. Distinguish these cases to provide more accurate suggestions.", "commit_aliases": ["0514616f0", "765a4c94c", "c1c6169eb", "d69836b13", "e3584e457", "f5a987c0e"], "source_commits": ["0514616f0"], "source_entry_id": "14.19/changes/031", "db_id": "f6cd3881521b7a2dc6d2b9f19526f25d", "patch_ids": ["8e0ef881f752f528d98e71b40408fb14"], "statement_hash": "32ecb3026c9c3225d992db692447d7310288c8dce5381a1c67d309759f6d3491", "relations": [{"rule": 2, "type": "equivalent", "target": "7f7999ebdb668d1d8e4b03d58897bb15", "evidence": {"same_day": true, "patch_ids": ["8e0ef881f752f528d98e71b40408fb14"], "statement_hash": "32ecb3026c9c3225d992db692447d7310288c8dce5381a1c67d309759f6d3491"}}, {"rule": 2, "type": "equivalent", "target": "a9220fc9720c3d2bde349e028b00e445", "evidence": {"same_day": true, "patch_ids": ["8e0ef881f752f528d98e71b40408fb14"], "statement_hash": "32ecb3026c9c3225d992db692447d7310288c8dce5381a1c67d309759f6d3491"}}, {"rule": 2, "type": "equivalent", "target": "c1183185f1f7680372020bbb8a62b5c0", "evidence": {"same_day": true, "patch_ids": ["8e0ef881f752f528d98e71b40408fb14"], "statement_hash": "32ecb3026c9c3225d992db692447d7310288c8dce5381a1c67d309759f6d3491"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "7f7999ebdb668d1d8e4b03d58897bb15", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "改进 psql 对 COPY 和 \\copy 选项的 tab 补全", "evidence": {"same_day": true, "patch_ids": ["8e0ef881f752f528d98e71b40408fb14"], "statement_hash": "32ecb3026c9c3225d992db692447d7310288c8dce5381a1c67d309759f6d3491"}, "url": "/docs/compare/?release=17.6#17.6-d2095553b4c88b05", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "c1183185f1f7680372020bbb8a62b5c0", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "改进 psql 对 COPY 和 \\copy 选项的 tab 补全", "evidence": {"same_day": true, "patch_ids": ["8e0ef881f752f528d98e71b40408fb14"], "statement_hash": "32ecb3026c9c3225d992db692447d7310288c8dce5381a1c67d309759f6d3491"}, "url": "/docs/compare/?release=16.10#16.10-b91f3058dca77df4", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "a9220fc9720c3d2bde349e028b00e445", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "改进 psql 对 COPY 和 \\copy 选项的 tab 补全", "evidence": {"same_day": true, "patch_ids": ["8e0ef881f752f528d98e71b40408fb14"], "statement_hash": "32ecb3026c9c3225d992db692447d7310288c8dce5381a1c67d309759f6d3491"}, "url": "/docs/compare/?release=15.14#15.14-6f6c639f5c442d0a", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}]}, {"id": "14.19-a4cc3cc741c765b4", "cves": [], "html": "<p>确保 <span>pg_dump</span> 以有效的顺序导出域约束上的注释（Jian He）<a href=\"https://postgr.es/c/e04aca1c4\">§</a></p>\n<p>在某些情况下，注释命令可能出现在约束创建之前。</p>", "text": "确保 pg_dump 以有效的顺序导出域约束上的注释（Jian He）§ 在某些情况下，注释命令可能出现在约束创建之前。", "title": "确保 pg_dump 以有效的顺序导出域约束上的注释", "commits": ["e04aca1c4"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "8dd9c75867310f01d4a702ef79da3821ded9f99bf42af723a9733ab7afbb5569", "section_path": ["变更"], "commit_groups": [["0858f0f96", "57949cea5", "5a261c135", "cef998ef8", "d07bc7c2b", "dca0e9693", "e04aca1c4"]], "identity_text": "Ensure that pg_dump dumps comments on domain constraints in a valid order (Jian He) In some cases the comment command could appear before creation of the constraint.", "commit_aliases": ["0858f0f96", "57949cea5", "5a261c135", "cef998ef8", "d07bc7c2b", "dca0e9693", "e04aca1c4"], "source_commits": ["e04aca1c4"], "source_entry_id": "14.19/changes/032", "db_id": "c9cc63af5a74aeb8bb235d5cfa603f64", "patch_ids": ["46c6b17393f1c6e6833de5af16652620"], "statement_hash": "2a4ac5cc4a8c9cf0a63bf26f29d7fe12de34db67682fafcd654babc102897f0d", "relations": [{"rule": 2, "type": "equivalent", "target": "2cf505b63956338ef28e430678d6e683", "evidence": {"same_day": true, "patch_ids": ["46c6b17393f1c6e6833de5af16652620"], "statement_hash": "2a4ac5cc4a8c9cf0a63bf26f29d7fe12de34db67682fafcd654babc102897f0d"}}, {"rule": 2, "type": "equivalent", "target": "47c2db510c8e651ce08cb19eea7a186e", "evidence": {"same_day": true, "patch_ids": ["46c6b17393f1c6e6833de5af16652620"], "statement_hash": "2a4ac5cc4a8c9cf0a63bf26f29d7fe12de34db67682fafcd654babc102897f0d"}}, {"rule": 2, "type": "equivalent", "target": "918b4f5a1b00861852fd876427a02929", "evidence": {"same_day": true, "patch_ids": ["46c6b17393f1c6e6833de5af16652620"], "statement_hash": "2a4ac5cc4a8c9cf0a63bf26f29d7fe12de34db67682fafcd654babc102897f0d"}}, {"rule": 2, "type": "equivalent", "target": "d262bfebe0ddaae5fe67a919cbfc48a1", "evidence": {"same_day": true, "patch_ids": ["46c6b17393f1c6e6833de5af16652620"], "statement_hash": "2a4ac5cc4a8c9cf0a63bf26f29d7fe12de34db67682fafcd654babc102897f0d"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "918b4f5a1b00861852fd876427a02929", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "确保 pg_dump 以有效的顺序导出域约束上的注释", "evidence": {"same_day": true, "patch_ids": ["46c6b17393f1c6e6833de5af16652620"], "statement_hash": "2a4ac5cc4a8c9cf0a63bf26f29d7fe12de34db67682fafcd654babc102897f0d"}, "url": "/docs/compare/?release=17.6#17.6-3365ac2278a8bf4f", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "d262bfebe0ddaae5fe67a919cbfc48a1", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "确保 pg_dump 以有效的顺序导出域约束上的注释", "evidence": {"same_day": true, "patch_ids": ["46c6b17393f1c6e6833de5af16652620"], "statement_hash": "2a4ac5cc4a8c9cf0a63bf26f29d7fe12de34db67682fafcd654babc102897f0d"}, "url": "/docs/compare/?release=16.10#16.10-530b5686b1f7d60d", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "47c2db510c8e651ce08cb19eea7a186e", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "确保 pg_dump 以有效的顺序导出域约束上的注释", "evidence": {"same_day": true, "patch_ids": ["46c6b17393f1c6e6833de5af16652620"], "statement_hash": "2a4ac5cc4a8c9cf0a63bf26f29d7fe12de34db67682fafcd654babc102897f0d"}, "url": "/docs/compare/?release=15.14#15.14-2b9eabf786c88d61", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "2cf505b63956338ef28e430678d6e683", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "确保 pg_dump 以有效的顺序导出域约束上的注释", "evidence": {"same_day": true, "patch_ids": ["46c6b17393f1c6e6833de5af16652620"], "statement_hash": "2a4ac5cc4a8c9cf0a63bf26f29d7fe12de34db67682fafcd654babc102897f0d"}, "url": "/docs/compare/?release=13.22#13.22-5426c8941d84d497", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-9af82fe934a32c58", "cves": [], "html": "<p>确保 <span>pg_dump</span> 对所有类型的数据库对象具有稳定的排序顺序（Noah Misch、Andreas Karlsson）<a href=\"https://postgr.es/c/7ee7c1cd3\">§</a> <a href=\"https://postgr.es/c/25388fb2c\">§</a> <a href=\"https://postgr.es/c/7846f4709\">§</a></p>\n<p><span>pg_dump</span> 在执行依赖关系驱动的重新排序之前，按逻辑名称对对象进行排序。此排序未考虑标识某些对象类型（如规则和约束）的完整唯一键，因此对于逻辑上相同的数据库可能产生不同的排序顺序。这使得通过比较 <span>pg_dump</span> 输出的 diff 来比较数据库变得困难，因此改进了逻辑以确保在所有情况下排序顺序都是稳定的。</p>", "text": "确保 pg_dump 对所有类型的数据库对象具有稳定的排序顺序（Noah Misch、Andreas Karlsson）§ § § pg_dump 在执行依赖关系驱动的重新排序之前，按逻辑名称对对象进行排序。此排序未考虑标识某些对象类型（如规则和约束）的完整唯一键，因此对于逻辑上相同的数据库可能产生不同的排序顺序。这使得通过比较 pg_dump 输出的 diff 来比较数据库变得困难，因此改进了逻辑以确保在所有情况下排序顺序都是稳定的。", "title": "确保 pg_dump 对所有类型的数据库对象具有稳定的排序顺序", "commits": ["25388fb2c", "7846f4709", "7ee7c1cd3"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "bfe4bd8c5fa2ee17852de5305c5bbc9d9107d79e496a905a244aaba23d8de63a", "section_path": ["变更"], "commit_groups": [["04bc2c42f", "0ac1581c3", "0decd5e89", "1ca1889ea", "22f126da6", "7ee7c1cd3", "c0ae03384"], ["0d2734eac", "216683296", "28e7252e4", "70637d7ae", "7846f4709", "bc05590c7"], ["25388fb2c", "350e6b8ea", "5dd4957b2", "9affed263", "cc9a62c51", "e99010cbd"]], "identity_text": "Ensure stable sort ordering in pg_dump for all types of database objects (Noah Misch, Andreas Karlsson) pg_dump sorts objects by their logical names before performing dependency-driven reordering. This sort did not account for the full unique key identifying certain object types such as rules and constraints, and thus it could produce dissimilar sort orders for logically-identical databases. That made it difficult to compare databases by diff'ing pg_dump output, so improve the logic to ensure stable sort ordering in all cases.", "commit_aliases": ["04bc2c42f", "0ac1581c3", "0d2734eac", "0decd5e89", "1ca1889ea", "216683296", "22f126da6", "25388fb2c", "28e7252e4", "350e6b8ea", "5dd4957b2", "70637d7ae", "7846f4709", "7ee7c1cd3", "9affed263", "bc05590c7", "c0ae03384", "cc9a62c51", "e99010cbd"], "source_commits": ["25388fb2c", "7846f4709", "7ee7c1cd3"], "source_entry_id": "14.19/changes/033", "db_id": "e039fc3240135619b0c62004d8c3d5e6", "patch_ids": ["0cb338d636cc8af202b3e00a5a841699", "555c1cba69037a053e1cac20aaeebbf8", "a96adf0d7d60c761b0fe9a5eeb034a39"], "statement_hash": "39f6c7b6b815d35578592d0141ec839da55282724680193f69d08e00d4cd8da1", "relations": [{"rule": 2, "type": "equivalent", "target": "050028e9f6796e813ec14808f10cd656", "evidence": {"same_day": true, "patch_ids": ["0cb338d636cc8af202b3e00a5a841699", "555c1cba69037a053e1cac20aaeebbf8", "a96adf0d7d60c761b0fe9a5eeb034a39"], "statement_hash": "39f6c7b6b815d35578592d0141ec839da55282724680193f69d08e00d4cd8da1"}}, {"rule": 2, "type": "equivalent", "target": "4b78cb69db4646ca6f86ad07ac6c2424", "evidence": {"same_day": true, "patch_ids": ["0cb338d636cc8af202b3e00a5a841699", "555c1cba69037a053e1cac20aaeebbf8", "a96adf0d7d60c761b0fe9a5eeb034a39"], "statement_hash": "39f6c7b6b815d35578592d0141ec839da55282724680193f69d08e00d4cd8da1"}}, {"rule": 2, "type": "equivalent", "target": "7605d67109b60c255500436df8b8fce9", "evidence": {"same_day": true, "patch_ids": ["0cb338d636cc8af202b3e00a5a841699", "555c1cba69037a053e1cac20aaeebbf8", "a96adf0d7d60c761b0fe9a5eeb034a39"], "statement_hash": "39f6c7b6b815d35578592d0141ec839da55282724680193f69d08e00d4cd8da1"}}, {"rule": 2, "type": "equivalent", "target": "a419ddfce4c1acfe095cc2e7f9bc4d6f", "evidence": {"same_day": true, "patch_ids": ["0cb338d636cc8af202b3e00a5a841699", "555c1cba69037a053e1cac20aaeebbf8", "a96adf0d7d60c761b0fe9a5eeb034a39"], "statement_hash": "39f6c7b6b815d35578592d0141ec839da55282724680193f69d08e00d4cd8da1"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "7605d67109b60c255500436df8b8fce9", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "确保 pg_dump 对所有类型的数据库对象具有稳定的排序顺序", "evidence": {"same_day": true, "patch_ids": ["0cb338d636cc8af202b3e00a5a841699", "555c1cba69037a053e1cac20aaeebbf8", "a96adf0d7d60c761b0fe9a5eeb034a39"], "statement_hash": "39f6c7b6b815d35578592d0141ec839da55282724680193f69d08e00d4cd8da1"}, "url": "/docs/compare/?release=17.6#17.6-1f0b02d913052611", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "050028e9f6796e813ec14808f10cd656", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "确保 pg_dump 对所有类型的数据库对象具有稳定的排序顺序", "evidence": {"same_day": true, "patch_ids": ["0cb338d636cc8af202b3e00a5a841699", "555c1cba69037a053e1cac20aaeebbf8", "a96adf0d7d60c761b0fe9a5eeb034a39"], "statement_hash": "39f6c7b6b815d35578592d0141ec839da55282724680193f69d08e00d4cd8da1"}, "url": "/docs/compare/?release=16.10#16.10-730ebbe51b68a292", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "a419ddfce4c1acfe095cc2e7f9bc4d6f", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "确保 pg_dump 对所有类型的数据库对象具有稳定的排序顺序", "evidence": {"same_day": true, "patch_ids": ["0cb338d636cc8af202b3e00a5a841699", "555c1cba69037a053e1cac20aaeebbf8", "a96adf0d7d60c761b0fe9a5eeb034a39"], "statement_hash": "39f6c7b6b815d35578592d0141ec839da55282724680193f69d08e00d4cd8da1"}, "url": "/docs/compare/?release=15.14#15.14-ea1c701894cbd4fc", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "4b78cb69db4646ca6f86ad07ac6c2424", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "确保 pg_dump 对所有类型的数据库对象具有稳定的排序顺序", "evidence": {"same_day": true, "patch_ids": ["0cb338d636cc8af202b3e00a5a841699", "555c1cba69037a053e1cac20aaeebbf8", "a96adf0d7d60c761b0fe9a5eeb034a39"], "statement_hash": "39f6c7b6b815d35578592d0141ec839da55282724680193f69d08e00d4cd8da1"}, "url": "/docs/compare/?release=13.22#13.22-f2dae5f6a4978993", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-9991c8126b0b79a5", "cves": [], "html": "<p>在 <span>pg_upgrade</span> 中，检查不一致的继承非空约束（Ali Akbar）<a href=\"https://postgr.es/c/ea3386cc7\">§</a> <a href=\"https://postgr.es/c/94dc2b37b\">§</a> <a href=\"https://postgr.es/c/a00eb374c\">§</a> <a href=\"https://postgr.es/c/f9f6595e3\">§</a> <a href=\"https://postgr.es/c/ed2bb0cdd\">§</a> <a href=\"https://postgr.es/c/bef2c2a4e\">§</a></p>\n<p>18 之前的 <span>PostgreSQL</span> 版本允许删除继承列的非空约束。但是，这会导致无法恢复的模式，从而导致 <span>pg_upgrade</span> 失败。在 <span>pg_upgrade</span> 的预检查中检测此类情况，以便用户在启动升级之前修复它们。</p>", "text": "在 pg_upgrade 中，检查不一致的继承非空约束（Ali Akbar）§ § § § § § 18 之前的 PostgreSQL 版本允许删除继承列的非空约束。但是，这会导致无法恢复的模式，从而导致 pg_upgrade 失败。在 pg_upgrade 的预检查中检测此类情况，以便用户在启动升级之前修复它们。", "title": "在 pg_upgrade 中，检查不一致的继承非空约束", "commits": ["94dc2b37b", "a00eb374c", "bef2c2a4e", "ea3386cc7", "ed2bb0cdd", "f9f6595e3"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "a3a9e7b6f28b33d5d881ed790132189dc81903b178821e4736b59364e2edbeab", "section_path": ["变更"], "commit_groups": [["05b367bea", "1084e76f3", "160131033", "1beda2c3c", "63c79a6fc", "930e1faec", "a00eb374c"], ["06f444816", "a8b31b160", "de7fd83cd", "ed2bb0cdd"], ["07da2985d", "0f4958685", "b0f0e2221", "b8b2e6052", "ea3386cc7", "f295494d3", "f63e408e8"], ["095e83d09", "18d2d8ae4", "bef2c2a4e"], ["144ad723a", "1e007722f", "708469281", "94dc2b37b", "bcb8d47cd", "bd48455d8", "f943e2339"], ["22d783350", "7406a7d82", "f9f6595e3"]], "identity_text": "In pg_upgrade, check for inconsistent inherited not-null constraints (Ali Akbar) PostgreSQL versions before 18 allow an inherited column not-null constraint to be dropped. However, this results in a schema that cannot be restored, leading to failure in pg_upgrade. Detect such cases during pg_upgrade's preflight checks to allow users to fix them before initiating the upgrade.", "commit_aliases": ["05b367bea", "06f444816", "07da2985d", "095e83d09", "0f4958685", "1084e76f3", "144ad723a", "160131033", "18d2d8ae4", "1beda2c3c", "1e007722f", "22d783350", "63c79a6fc", "708469281", "7406a7d82", "930e1faec", "94dc2b37b", "a00eb374c", "a8b31b160", "b0f0e2221", "b8b2e6052", "bcb8d47cd", "bd48455d8", "bef2c2a4e", "de7fd83cd", "ea3386cc7", "ed2bb0cdd", "f295494d3", "f63e408e8", "f943e2339", "f9f6595e3"], "source_commits": ["94dc2b37b", "a00eb374c", "bef2c2a4e", "ea3386cc7", "ed2bb0cdd", "f9f6595e3"], "source_entry_id": "14.19/changes/034", "db_id": "72c78fa6ba1d4f692d09ce33f80bf3bf", "patch_ids": ["73ba3fc3ce745b77c99a24e3c5073661", "8c797fbdf29bd8e99e4302a07d193211", "8e4302b6ca6ce3feadff66ff28bb1f28", "a5b72471b30b3eb404df47248ecbb4a8", "a8889bddc0913a0d30d443a98f6d5d94", "cf4e26661260159e109aaaf9434aca59"], "statement_hash": "a66fa6e8b11c98e3ef34b9a9384b3c9ffe07c0edcc5a9b3cb22b196a70bff6c6", "relations": [{"rule": 2, "type": "equivalent", "target": "08391bf8b6da8e940f10290a7edbde0c", "evidence": {"same_day": true, "patch_ids": ["73ba3fc3ce745b77c99a24e3c5073661", "8c797fbdf29bd8e99e4302a07d193211", "8e4302b6ca6ce3feadff66ff28bb1f28", "a5b72471b30b3eb404df47248ecbb4a8", "a8889bddc0913a0d30d443a98f6d5d94", "cf4e26661260159e109aaaf9434aca59"], "statement_hash": "a66fa6e8b11c98e3ef34b9a9384b3c9ffe07c0edcc5a9b3cb22b196a70bff6c6"}}, {"rule": 2, "type": "equivalent", "target": "1746b4d1494482ad224bb015988546a3", "evidence": {"same_day": true, "patch_ids": ["73ba3fc3ce745b77c99a24e3c5073661", "8c797fbdf29bd8e99e4302a07d193211", "8e4302b6ca6ce3feadff66ff28bb1f28", "a5b72471b30b3eb404df47248ecbb4a8", "a8889bddc0913a0d30d443a98f6d5d94", "cf4e26661260159e109aaaf9434aca59"], "statement_hash": "a66fa6e8b11c98e3ef34b9a9384b3c9ffe07c0edcc5a9b3cb22b196a70bff6c6"}}, {"rule": 2, "type": "equivalent", "target": "2c698d04ce4a9a5058f6c0af05c2692e", "evidence": {"same_day": true, "patch_ids": ["73ba3fc3ce745b77c99a24e3c5073661", "8c797fbdf29bd8e99e4302a07d193211", "8e4302b6ca6ce3feadff66ff28bb1f28", "a5b72471b30b3eb404df47248ecbb4a8", "a8889bddc0913a0d30d443a98f6d5d94", "cf4e26661260159e109aaaf9434aca59"], "statement_hash": "a66fa6e8b11c98e3ef34b9a9384b3c9ffe07c0edcc5a9b3cb22b196a70bff6c6"}}, {"rule": 2, "type": "equivalent", "target": "d4362d10eb3f885ab2bad37a6a5d60a8", "evidence": {"same_day": true, "patch_ids": ["73ba3fc3ce745b77c99a24e3c5073661", "8c797fbdf29bd8e99e4302a07d193211", "8e4302b6ca6ce3feadff66ff28bb1f28", "a5b72471b30b3eb404df47248ecbb4a8", "a8889bddc0913a0d30d443a98f6d5d94", "cf4e26661260159e109aaaf9434aca59"], "statement_hash": "a66fa6e8b11c98e3ef34b9a9384b3c9ffe07c0edcc5a9b3cb22b196a70bff6c6"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "d4362d10eb3f885ab2bad37a6a5d60a8", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "在 pg_upgrade 中，检查不一致的继承非空约束", "evidence": {"same_day": true, "patch_ids": ["73ba3fc3ce745b77c99a24e3c5073661", "8c797fbdf29bd8e99e4302a07d193211", "8e4302b6ca6ce3feadff66ff28bb1f28", "a5b72471b30b3eb404df47248ecbb4a8", "a8889bddc0913a0d30d443a98f6d5d94", "cf4e26661260159e109aaaf9434aca59"], "statement_hash": "a66fa6e8b11c98e3ef34b9a9384b3c9ffe07c0edcc5a9b3cb22b196a70bff6c6"}, "url": "/docs/compare/?release=17.6#17.6-5e9367338f12dda3", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "1746b4d1494482ad224bb015988546a3", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "在 pg_upgrade 中，检查不一致的继承非空约束", "evidence": {"same_day": true, "patch_ids": ["73ba3fc3ce745b77c99a24e3c5073661", "8c797fbdf29bd8e99e4302a07d193211", "8e4302b6ca6ce3feadff66ff28bb1f28", "a5b72471b30b3eb404df47248ecbb4a8", "a8889bddc0913a0d30d443a98f6d5d94", "cf4e26661260159e109aaaf9434aca59"], "statement_hash": "a66fa6e8b11c98e3ef34b9a9384b3c9ffe07c0edcc5a9b3cb22b196a70bff6c6"}, "url": "/docs/compare/?release=16.10#16.10-834855ac5a1a47ff", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "08391bf8b6da8e940f10290a7edbde0c", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "在 pg_upgrade 中，检查不一致的继承非空约束", "evidence": {"same_day": true, "patch_ids": ["73ba3fc3ce745b77c99a24e3c5073661", "8c797fbdf29bd8e99e4302a07d193211", "8e4302b6ca6ce3feadff66ff28bb1f28", "a5b72471b30b3eb404df47248ecbb4a8", "a8889bddc0913a0d30d443a98f6d5d94", "cf4e26661260159e109aaaf9434aca59"], "statement_hash": "a66fa6e8b11c98e3ef34b9a9384b3c9ffe07c0edcc5a9b3cb22b196a70bff6c6"}, "url": "/docs/compare/?release=15.14#15.14-e010820f7f059b5d", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "2c698d04ce4a9a5058f6c0af05c2692e", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "在 pg_upgrade 中，检查不一致的继承非空约束", "evidence": {"same_day": true, "patch_ids": ["73ba3fc3ce745b77c99a24e3c5073661", "8c797fbdf29bd8e99e4302a07d193211", "8e4302b6ca6ce3feadff66ff28bb1f28", "a5b72471b30b3eb404df47248ecbb4a8", "a8889bddc0913a0d30d443a98f6d5d94", "cf4e26661260159e109aaaf9434aca59"], "statement_hash": "a66fa6e8b11c98e3ef34b9a9384b3c9ffe07c0edcc5a9b3cb22b196a70bff6c6"}, "url": "/docs/compare/?release=13.22#13.22-a00cc36cdb51bbba", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-cc3723871867a610", "cves": [], "html": "<p>避免在 <span>initdb</span> 期间启用 <code>track_commit_timestamp</code> 时的断言失败（Hayato Kuroda、Andy Fan）<a href=\"https://postgr.es/c/b61ddcaf4\">§</a></p>", "text": "避免在 initdb 期间启用 track_commit_timestamp 时的断言失败（Hayato Kuroda、Andy Fan）§", "title": "避免在 initdb 期间启用 track_commit_timestamp 时的断言失败", "commits": ["b61ddcaf4"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "3e433b538655b53fd13a7cf101964ed3a2cd7825d3e891670433ce84d7a3f147", "section_path": ["变更"], "commit_groups": [["29a4b63c6", "5a6c39b6d", "7e7059abf", "8bca4476f", "ae20c105f", "b61ddcaf4", "dcbbd4331"]], "identity_text": "Avoid assertion failure if track_commit_timestamp is enabled during initdb (Hayato Kuroda, Andy Fan)", "commit_aliases": ["29a4b63c6", "5a6c39b6d", "7e7059abf", "8bca4476f", "ae20c105f", "b61ddcaf4", "dcbbd4331"], "source_commits": ["b61ddcaf4"], "source_entry_id": "14.19/changes/035", "db_id": "211cdc3aed79778b83631af5b78c942c", "patch_ids": ["647719f86767f01d7610fb3f98c77583"], "statement_hash": "bf3c60fed428b05ee8ef2d02cc992b46c02b88b8b40d560a0cd325fec8486001", "relations": [{"rule": 2, "type": "equivalent", "target": "0a873594fd32271d8bf988c4f3b19b42", "evidence": {"same_day": true, "patch_ids": ["647719f86767f01d7610fb3f98c77583"], "statement_hash": "bf3c60fed428b05ee8ef2d02cc992b46c02b88b8b40d560a0cd325fec8486001"}}, {"rule": 2, "type": "equivalent", "target": "6b403d1d9e7b95e29ad83037a0936814", "evidence": {"same_day": true, "patch_ids": ["647719f86767f01d7610fb3f98c77583"], "statement_hash": "bf3c60fed428b05ee8ef2d02cc992b46c02b88b8b40d560a0cd325fec8486001"}}, {"rule": 2, "type": "equivalent", "target": "ac4f7897a1eae053ca08642d6cda3f9f", "evidence": {"same_day": true, "patch_ids": ["647719f86767f01d7610fb3f98c77583"], "statement_hash": "bf3c60fed428b05ee8ef2d02cc992b46c02b88b8b40d560a0cd325fec8486001"}}, {"rule": 2, "type": "equivalent", "target": "ffb8504e6c20cff85436fd08ed33b263", "evidence": {"same_day": true, "patch_ids": ["647719f86767f01d7610fb3f98c77583"], "statement_hash": "bf3c60fed428b05ee8ef2d02cc992b46c02b88b8b40d560a0cd325fec8486001"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "6b403d1d9e7b95e29ad83037a0936814", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "避免在 initdb 期间启用 track_commit_timestamp 时的断言失败", "evidence": {"same_day": true, "patch_ids": ["647719f86767f01d7610fb3f98c77583"], "statement_hash": "bf3c60fed428b05ee8ef2d02cc992b46c02b88b8b40d560a0cd325fec8486001"}, "url": "/docs/compare/?release=17.6#17.6-1c56e55bc6977ab5", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "ac4f7897a1eae053ca08642d6cda3f9f", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "避免在 initdb 期间启用 track_commit_timestamp 时的断言失败", "evidence": {"same_day": true, "patch_ids": ["647719f86767f01d7610fb3f98c77583"], "statement_hash": "bf3c60fed428b05ee8ef2d02cc992b46c02b88b8b40d560a0cd325fec8486001"}, "url": "/docs/compare/?release=16.10#16.10-4234b5221df4bebb", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "0a873594fd32271d8bf988c4f3b19b42", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "避免在 initdb 期间启用 track_commit_timestamp 时的断言失败", "evidence": {"same_day": true, "patch_ids": ["647719f86767f01d7610fb3f98c77583"], "statement_hash": "bf3c60fed428b05ee8ef2d02cc992b46c02b88b8b40d560a0cd325fec8486001"}, "url": "/docs/compare/?release=15.14#15.14-acaecde1fdd34028", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "ffb8504e6c20cff85436fd08ed33b263", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "避免在 initdb 期间启用 track_commit_timestamp 时的断言失败", "evidence": {"same_day": true, "patch_ids": ["647719f86767f01d7610fb3f98c77583"], "statement_hash": "bf3c60fed428b05ee8ef2d02cc992b46c02b88b8b40d560a0cd325fec8486001"}, "url": "/docs/compare/?release=13.22#13.22-cac6e236cba2284d", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-a0d8c81779538197", "cves": [], "html": "<p>避免在 <code>contrib/dblink</code> 建立连接期间可能泄漏已打开的连接（Tom Lane）<a href=\"https://postgr.es/c/e20b3256a\">§</a></p>\n<p>在罕见情况下，如果我们在将新连接对象插入 dblink 的 hash 表时遇到内存耗尽，那么该已打开的连接就会一直泄漏到会话结束，并在远程服务器上留下一个空闲会话。</p>", "text": "避免在 contrib/dblink 建立连接期间可能泄漏已打开的连接（Tom Lane）§ 在罕见情况下，如果我们在将新连接对象插入 dblink 的 hash 表时遇到内存耗尽，那么该已打开的连接就会一直泄漏到会话结束，并在远程服务器上留下一个空闲会话。", "title": "避免在 contrib/dblink 建立连接期间可能泄漏已打开的连接", "commits": ["e20b3256a"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "8c59b44de865234febed3ab7623eaa95e7498ee3e8a2afb50c0899f523466bc5", "section_path": ["变更"], "commit_groups": [["09c9ae8f6", "2cd2222ca", "470273da0", "8eef55db1", "e20b3256a", "e7d3d4ed4"]], "identity_text": "Avoid possible leak of the open connection during contrib/dblink connection establishment (Tom Lane) In the rare scenario where we hit out-of-memory while inserting the new connection object into dblink's hashtable, the open connection would be leaked until end of session, leaving an idle session sitting on the remote server.", "commit_aliases": ["09c9ae8f6", "2cd2222ca", "470273da0", "8eef55db1", "e20b3256a", "e7d3d4ed4"], "source_commits": ["2cd2222ca"], "source_entry_id": "14.19/changes/036", "db_id": "45566aab861f4620b7be99226b573be5", "patch_ids": ["ad074126925151af6358b1f754025008"], "statement_hash": "148946de905374f137eaedfd628dc86633d940c23860153ff88258623ff724da", "relations": [{"rule": 2, "type": "equivalent", "target": "2f55da59aa4982efff6c020c3bd04d77", "evidence": {"same_day": true, "patch_ids": ["ad074126925151af6358b1f754025008"], "statement_hash": "148946de905374f137eaedfd628dc86633d940c23860153ff88258623ff724da"}}, {"rule": 2, "type": "equivalent", "target": "83b885660d0c7021b04075e3d44ddf9f", "evidence": {"same_day": true, "patch_ids": ["ad074126925151af6358b1f754025008"], "statement_hash": "148946de905374f137eaedfd628dc86633d940c23860153ff88258623ff724da"}}, {"rule": 2, "type": "equivalent", "target": "a7bc5346dd90d175c498a49d712e2774", "evidence": {"same_day": true, "patch_ids": ["ad074126925151af6358b1f754025008"], "statement_hash": "148946de905374f137eaedfd628dc86633d940c23860153ff88258623ff724da"}}, {"rule": 2, "type": "equivalent", "target": "c897943d3fd9af5a4d22c4a7d504ba01", "evidence": {"same_day": true, "patch_ids": ["ad074126925151af6358b1f754025008"], "statement_hash": "148946de905374f137eaedfd628dc86633d940c23860153ff88258623ff724da"}}], "version": "14.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "83b885660d0c7021b04075e3d44ddf9f", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "避免在 contrib/dblink 建立连接期间可能泄漏已打开的连接", "evidence": {"same_day": true, "patch_ids": ["ad074126925151af6358b1f754025008"], "statement_hash": "148946de905374f137eaedfd628dc86633d940c23860153ff88258623ff724da"}, "url": "/docs/compare/?release=17.6#17.6-a0d8c81779538197", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "c897943d3fd9af5a4d22c4a7d504ba01", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "避免在 contrib/dblink 建立连接期间可能泄漏已打开的连接", "evidence": {"same_day": true, "patch_ids": ["ad074126925151af6358b1f754025008"], "statement_hash": "148946de905374f137eaedfd628dc86633d940c23860153ff88258623ff724da"}, "url": "/docs/compare/?release=16.10#16.10-a0d8c81779538197", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "2f55da59aa4982efff6c020c3bd04d77", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "避免在 contrib/dblink 建立连接期间可能泄漏已打开的连接", "evidence": {"same_day": true, "patch_ids": ["ad074126925151af6358b1f754025008"], "statement_hash": "148946de905374f137eaedfd628dc86633d940c23860153ff88258623ff724da"}, "url": "/docs/compare/?release=15.14#15.14-a0d8c81779538197", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "a7bc5346dd90d175c498a49d712e2774", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "避免在 contrib/dblink 连接建立过程中可能泄漏已打开的连接", "evidence": {"same_day": true, "patch_ids": ["ad074126925151af6358b1f754025008"], "statement_hash": "148946de905374f137eaedfd628dc86633d940c23860153ff88258623ff724da"}, "url": "/docs/compare/?release=13.22#13.22-d416439a5881d3b2", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-8f5065b37a2ab1c3", "cves": [], "html": "<p>使 <code>contrib/pg_prewarm</code> 能够处理非常大的 <code>shared_buffers</code> 设置（Daria Shanina）<a href=\"https://postgr.es/c/a4b9707c4\">§</a></p>\n<p>如果 <code>shared_buffers</code> 大于约 5000 万个缓冲区（400GB），autoprewarm 就会因内存分配错误而失败。</p>", "text": "使 contrib/pg_prewarm 能够处理非常大的 shared_buffers 设置（Daria Shanina）§ 如果 shared_buffers 大于约 5000 万个缓冲区（400GB），autoprewarm 就会因内存分配错误而失败。", "title": "使 contrib/pg_prewarm 能够处理非常大的 shared_buffers 设置", "commits": ["a4b9707c4"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "774f9ded5876a65e6848b96822dad2176dcf2231e49e23f2aa2ca5bd362acc18", "section_path": ["变更"], "commit_groups": [["016e407f4", "169429264", "4adbaa36c", "a4b9707c4", "d59ff3be2", "e4b8f925a"]], "identity_text": "Make contrib/pg_prewarm cope with very large shared_buffers settings (Daria Shanina) Autoprewarm failed with a memory allocation error if shared_buffers was larger than about 50 million buffers (400GB).", "commit_aliases": ["016e407f4", "169429264", "4adbaa36c", "a4b9707c4", "d59ff3be2", "e4b8f925a"], "source_commits": ["a4b9707c4"], "source_entry_id": "14.19/changes/037", "db_id": "c68e2eb74207c113dc50a981b224105f", "patch_ids": ["2ddbc5358225eb04ea6642989759a6cf"], "statement_hash": "620236991d9540c64c3670bad932d1791fbf936f814c45121c613ff7885f2e39", "relations": [{"rule": 2, "type": "equivalent", "target": "1face676ff5cf71997333256595c36fa", "evidence": {"same_day": true, "patch_ids": ["2ddbc5358225eb04ea6642989759a6cf"], "statement_hash": "620236991d9540c64c3670bad932d1791fbf936f814c45121c613ff7885f2e39"}}, {"rule": 2, "type": "equivalent", "target": "4c9e049eb08c1c81dd6f2be6670da6b7", "evidence": {"same_day": true, "patch_ids": ["2ddbc5358225eb04ea6642989759a6cf"], "statement_hash": "620236991d9540c64c3670bad932d1791fbf936f814c45121c613ff7885f2e39"}}, {"rule": 2, "type": "equivalent", "target": "b5fb83c37d8b63c533b733ad7dc865d6", "evidence": {"same_day": true, "patch_ids": ["2ddbc5358225eb04ea6642989759a6cf"], "statement_hash": "620236991d9540c64c3670bad932d1791fbf936f814c45121c613ff7885f2e39"}}, {"rule": 2, "type": "equivalent", "target": "f2d428bb56fc5c8bded9669b8f8c5438", "evidence": {"same_day": true, "patch_ids": ["2ddbc5358225eb04ea6642989759a6cf"], "statement_hash": "620236991d9540c64c3670bad932d1791fbf936f814c45121c613ff7885f2e39"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "4c9e049eb08c1c81dd6f2be6670da6b7", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "使 contrib/pg_prewarm 能够处理非常大的 shared_buffers 设置", "evidence": {"same_day": true, "patch_ids": ["2ddbc5358225eb04ea6642989759a6cf"], "statement_hash": "620236991d9540c64c3670bad932d1791fbf936f814c45121c613ff7885f2e39"}, "url": "/docs/compare/?release=17.6#17.6-8f5065b37a2ab1c3", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "b5fb83c37d8b63c533b733ad7dc865d6", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "使 contrib/pg_prewarm 能够处理非常大的 shared_buffers 设置", "evidence": {"same_day": true, "patch_ids": ["2ddbc5358225eb04ea6642989759a6cf"], "statement_hash": "620236991d9540c64c3670bad932d1791fbf936f814c45121c613ff7885f2e39"}, "url": "/docs/compare/?release=16.10#16.10-3cc07d9ddb392d31", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "1face676ff5cf71997333256595c36fa", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "使 contrib/pg_prewarm 能够处理非常大的 shared_buffers 设置", "evidence": {"same_day": true, "patch_ids": ["2ddbc5358225eb04ea6642989759a6cf"], "statement_hash": "620236991d9540c64c3670bad932d1791fbf936f814c45121c613ff7885f2e39"}, "url": "/docs/compare/?release=15.14#15.14-7ba6e0d3be92a92d", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "f2d428bb56fc5c8bded9669b8f8c5438", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "使 contrib/pg_prewarm 能够处理非常大的 shared_buffers 设置", "evidence": {"same_day": true, "patch_ids": ["2ddbc5358225eb04ea6642989759a6cf"], "statement_hash": "620236991d9540c64c3670bad932d1791fbf936f814c45121c613ff7885f2e39"}, "url": "/docs/compare/?release=13.22#13.22-a1e5752066934140", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-128114da27ddd65a", "cves": [], "html": "<p>在 <code>contrib/pg_stat_statements</code> 中，避免在规范化查询中使用的参数编号出现间隔（Sami Imseih）<a href=\"https://postgr.es/c/130300a15\">§</a></p>", "text": "在 contrib/pg_stat_statements 中，避免在规范化查询中使用的参数编号出现间隔（Sami Imseih）§", "title": "在 contrib/pg_stat_statements 中，避免在规范化查询中使用的参数编号出现间隔", "commits": ["130300a15"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "d41e453a536be4387d7501ef0fe5da9fdaaf25d888a3b058976b2f6d32785d3d", "section_path": ["变更"], "commit_groups": [["130300a15", "290e8ab32", "35a428f30", "3c03b8cd7", "7e8b44f4e", "8a1459f62"]], "identity_text": "In contrib/pg_stat_statements, avoid leaving gaps in the set of parameter numbers used in a normalized query (Sami Imseih)", "commit_aliases": ["130300a15", "290e8ab32", "35a428f30", "3c03b8cd7", "7e8b44f4e", "8a1459f62"], "source_commits": ["8a1459f62"], "source_entry_id": "14.19/changes/038", "db_id": "d0e49087520c2f1f1e348b126a88ff56", "patch_ids": ["3438823a8b7edf73a4ed8375ce002378"], "statement_hash": "5c3d721d62e4cfa46f427f2c1c02556fe12be18337ef50d89eacd20cc79283e9", "relations": [{"rule": 2, "type": "equivalent", "target": "97bb7cdabda51e44fb1f431f03805080", "evidence": {"same_day": true, "patch_ids": ["3438823a8b7edf73a4ed8375ce002378"], "statement_hash": "5c3d721d62e4cfa46f427f2c1c02556fe12be18337ef50d89eacd20cc79283e9"}}, {"rule": 2, "type": "equivalent", "target": "d51c9c627a13629b841657b6af2dd94a", "evidence": {"same_day": true, "patch_ids": ["3438823a8b7edf73a4ed8375ce002378"], "statement_hash": "5c3d721d62e4cfa46f427f2c1c02556fe12be18337ef50d89eacd20cc79283e9"}}, {"rule": 2, "type": "equivalent", "target": "f5750e8b670a5f8f8d0d13498c768dac", "evidence": {"same_day": true, "patch_ids": ["3438823a8b7edf73a4ed8375ce002378"], "statement_hash": "5c3d721d62e4cfa46f427f2c1c02556fe12be18337ef50d89eacd20cc79283e9"}}, {"rule": 2, "type": "equivalent", "target": "f804f1e8c79bd457d870276cb4a17830", "evidence": {"same_day": true, "patch_ids": ["3438823a8b7edf73a4ed8375ce002378"], "statement_hash": "5c3d721d62e4cfa46f427f2c1c02556fe12be18337ef50d89eacd20cc79283e9"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "97bb7cdabda51e44fb1f431f03805080", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "在 contrib/pg_stat_statements 中，避免在规范化查询中使用的参数编号出现间隔", "evidence": {"same_day": true, "patch_ids": ["3438823a8b7edf73a4ed8375ce002378"], "statement_hash": "5c3d721d62e4cfa46f427f2c1c02556fe12be18337ef50d89eacd20cc79283e9"}, "url": "/docs/compare/?release=17.6#17.6-128114da27ddd65a", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "d51c9c627a13629b841657b6af2dd94a", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "在 contrib/pg_stat_statements 中，避免在规范化查询中使用的参数编号出现间隔", "evidence": {"same_day": true, "patch_ids": ["3438823a8b7edf73a4ed8375ce002378"], "statement_hash": "5c3d721d62e4cfa46f427f2c1c02556fe12be18337ef50d89eacd20cc79283e9"}, "url": "/docs/compare/?release=16.10#16.10-7a99d947c1622f2d", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "f804f1e8c79bd457d870276cb4a17830", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "在 contrib/pg_stat_statements 中，避免在规范化查询中使用的参数编号出现间隔", "evidence": {"same_day": true, "patch_ids": ["3438823a8b7edf73a4ed8375ce002378"], "statement_hash": "5c3d721d62e4cfa46f427f2c1c02556fe12be18337ef50d89eacd20cc79283e9"}, "url": "/docs/compare/?release=15.14#15.14-128114da27ddd65a", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "f5750e8b670a5f8f8d0d13498c768dac", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "在 contrib/pg_stat_statements 中，避免在规范化查询中使用的参数编号出现间隔", "evidence": {"same_day": true, "patch_ids": ["3438823a8b7edf73a4ed8375ce002378"], "statement_hash": "5c3d721d62e4cfa46f427f2c1c02556fe12be18337ef50d89eacd20cc79283e9"}, "url": "/docs/compare/?release=13.22#13.22-7aa92b8bab6bd151", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-8a8b1f783f566c8f", "cves": [], "html": "<p>修复 <code>contrib/postgres_fdw</code> 的 DirectModify 方法中的内存泄漏（Tom Lane）<a href=\"https://postgr.es/c/9339c85af\">§</a></p>\n<p>如果查询在 DirectModify 方法两次调用之间失败，那么保存远程修改命令结果的 <code>PGresult</code> 就会在该会话剩余时间内泄漏；当存在 <code>RETURNING</code> 数据需要处理时，就可能发生这种情况。</p>", "text": "修复 contrib/postgres_fdw 的 DirectModify 方法中的内存泄漏（Tom Lane）§ 如果查询在 DirectModify 方法两次调用之间失败，那么保存远程修改命令结果的 PGresult 就会在该会话剩余时间内泄漏；当存在 RETURNING 数据需要处理时，就可能发生这种情况。", "title": "修复 contrib/postgres_fdw 的 DirectModify 方法中的内存泄漏", "commits": ["9339c85af"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "4099c47a3168d1784f7b81de8db12d2b75be697a6686cc5abab99edc7fa01041", "section_path": ["变更"], "commit_groups": [["232d8caea", "271cb7eaa", "2b92dc4ee", "3c31594f5", "4a07c0961", "9339c85af"]], "identity_text": "Fix memory leakage in contrib/postgres_fdw's DirectModify methods (Tom Lane) The PGresult holding the results of the remote modify command would be leaked for the rest of the session if the query fails between invocations of the DirectModify methods, which could happen when there's RETURNING data to process.", "commit_aliases": ["232d8caea", "271cb7eaa", "2b92dc4ee", "3c31594f5", "4a07c0961", "9339c85af"], "source_commits": ["4a07c0961"], "source_entry_id": "14.19/changes/039", "db_id": "752524d4777945404bc3641ea9f18ca4", "patch_ids": ["a3a3ca940a7fe9b91b393f89e48fb2cf"], "statement_hash": "09c199e4fac1b826479d694b22a9d514cef66c29e869a89a395e8727fb627954", "relations": [{"rule": 2, "type": "equivalent", "target": "12940007ea208d54000709a5b8e1d48d", "evidence": {"same_day": true, "patch_ids": ["a3a3ca940a7fe9b91b393f89e48fb2cf"], "statement_hash": "09c199e4fac1b826479d694b22a9d514cef66c29e869a89a395e8727fb627954"}}, {"rule": 2, "type": "equivalent", "target": "62379f7bef1baf1e0108fc15077ff686", "evidence": {"same_day": true, "patch_ids": ["a3a3ca940a7fe9b91b393f89e48fb2cf"], "statement_hash": "09c199e4fac1b826479d694b22a9d514cef66c29e869a89a395e8727fb627954"}}, {"rule": 2, "type": "equivalent", "target": "f0e02024508944ea7eb2260c31e7ae20", "evidence": {"same_day": true, "patch_ids": ["a3a3ca940a7fe9b91b393f89e48fb2cf"], "statement_hash": "09c199e4fac1b826479d694b22a9d514cef66c29e869a89a395e8727fb627954"}}, {"rule": 2, "type": "equivalent", "target": "f564666a4a5b9fe08f8379184059f2e0", "evidence": {"same_day": true, "patch_ids": ["a3a3ca940a7fe9b91b393f89e48fb2cf"], "statement_hash": "09c199e4fac1b826479d694b22a9d514cef66c29e869a89a395e8727fb627954"}}], "version": "14.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "f0e02024508944ea7eb2260c31e7ae20", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "修复 contrib/postgres_fdw 的 DirectModify 方法中的内存泄漏", "evidence": {"same_day": true, "patch_ids": ["a3a3ca940a7fe9b91b393f89e48fb2cf"], "statement_hash": "09c199e4fac1b826479d694b22a9d514cef66c29e869a89a395e8727fb627954"}, "url": "/docs/compare/?release=17.6#17.6-8a8b1f783f566c8f", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "f564666a4a5b9fe08f8379184059f2e0", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "修复 contrib/postgres_fdw 的 DirectModify 方法中的内存泄漏", "evidence": {"same_day": true, "patch_ids": ["a3a3ca940a7fe9b91b393f89e48fb2cf"], "statement_hash": "09c199e4fac1b826479d694b22a9d514cef66c29e869a89a395e8727fb627954"}, "url": "/docs/compare/?release=16.10#16.10-8a8b1f783f566c8f", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "12940007ea208d54000709a5b8e1d48d", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "修复 contrib/postgres_fdw 的 DirectModify 方法中的内存泄漏", "evidence": {"same_day": true, "patch_ids": ["a3a3ca940a7fe9b91b393f89e48fb2cf"], "statement_hash": "09c199e4fac1b826479d694b22a9d514cef66c29e869a89a395e8727fb627954"}, "url": "/docs/compare/?release=15.14#15.14-8a8b1f783f566c8f", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "62379f7bef1baf1e0108fc15077ff686", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "修复 contrib/postgres_fdw 的 DirectModify 方法中的内存泄漏", "evidence": {"same_day": true, "patch_ids": ["a3a3ca940a7fe9b91b393f89e48fb2cf"], "statement_hash": "09c199e4fac1b826479d694b22a9d514cef66c29e869a89a395e8727fb627954"}, "url": "/docs/compare/?release=13.22#13.22-025c80d4172c6ad6", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-786d3ef0017ef7a7", "cves": [], "html": "<p>确保 <span>configure</span> 的 <code>--with-includes</code> 和 <code>--with-libraries</code> 选项中列出的目录在系统提供的目录之前被搜索（Tom Lane）<a href=\"https://postgr.es/c/2dee95bd0\">§</a></p>\n<p>使用这些选项的一个常见原因是允许用户自行构建的库版本覆盖系统提供的版本。然而，在某些环境中，由于 makefile 中发出的命令中开关顺序不当，这无法正常工作。</p>", "text": "确保 configure 的 --with-includes 和 --with-libraries 选项中列出的目录在系统提供的目录之前被搜索（Tom Lane）§ 使用这些选项的一个常见原因是允许用户自行构建的库版本覆盖系统提供的版本。然而，在某些环境中，由于 makefile 中发出的命令中开关顺序不当，这无法正常工作。", "title": "确保 configure 的 --with-includes 和 --with-libraries 选项中列出的目录在系统提供的目录之前被搜索", "commits": ["2dee95bd0"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "2db733b4b18cac3983777b890e368dcd58085c00df816d877aa5b67de2742039", "section_path": ["变更"], "commit_groups": [["19857437b", "2dee95bd0", "4300d8b6a", "8e5e3ff55", "a644f5fc6", "bbc20c8a9", "c5bd803e5"]], "identity_text": "Ensure that directories listed in configure's --with-includes and --with-libraries options are searched before system-supplied directories (Tom Lane) A common reason for using these options is to allow a user-built version of some library to override the system-supplied version. However, that failed to work in some environments because of careless ordering of switches in the commands issued by the makefiles.", "commit_aliases": ["19857437b", "2dee95bd0", "4300d8b6a", "8e5e3ff55", "a644f5fc6", "bbc20c8a9", "c5bd803e5"], "source_commits": ["2dee95bd0"], "source_entry_id": "14.19/changes/040", "db_id": "61aa2ab6fe392516ba5d3d82dde9441c", "patch_ids": ["e06531c74199ac8287e60a478732f2a1"], "statement_hash": "3fe68075d2af5f66aa86cec9975bd83f6f8d380307c7a98a165429881d8ce3f6", "relations": [{"rule": 2, "type": "equivalent", "target": "40190bd5de736e0d1c6dfae0661e59ae", "evidence": {"same_day": true, "patch_ids": ["e06531c74199ac8287e60a478732f2a1"], "statement_hash": "3fe68075d2af5f66aa86cec9975bd83f6f8d380307c7a98a165429881d8ce3f6"}}, {"rule": 2, "type": "equivalent", "target": "9a079b12c4aa18e17d2daefb8f82755d", "evidence": {"same_day": true, "patch_ids": ["e06531c74199ac8287e60a478732f2a1"], "statement_hash": "3fe68075d2af5f66aa86cec9975bd83f6f8d380307c7a98a165429881d8ce3f6"}}, {"rule": 2, "type": "equivalent", "target": "dddc18a83ab3fb87426d5cf379c1808e", "evidence": {"same_day": true, "patch_ids": ["e06531c74199ac8287e60a478732f2a1"], "statement_hash": "3fe68075d2af5f66aa86cec9975bd83f6f8d380307c7a98a165429881d8ce3f6"}}, {"rule": 2, "type": "equivalent", "target": "f4e258f01fdb78e9599679037ae1dfde", "evidence": {"same_day": true, "patch_ids": ["e06531c74199ac8287e60a478732f2a1"], "statement_hash": "3fe68075d2af5f66aa86cec9975bd83f6f8d380307c7a98a165429881d8ce3f6"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "40190bd5de736e0d1c6dfae0661e59ae", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "确保 configure 的 --with-includes 和 --with-libraries 选项中列出的目录在系统提供的目录之前被搜索", "evidence": {"same_day": true, "patch_ids": ["e06531c74199ac8287e60a478732f2a1"], "statement_hash": "3fe68075d2af5f66aa86cec9975bd83f6f8d380307c7a98a165429881d8ce3f6"}, "url": "/docs/compare/?release=17.6#17.6-8f492999b2b70b5b", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "9a079b12c4aa18e17d2daefb8f82755d", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "确保 configure 的 --with-includes 和 --with-libraries 选项中列出的目录在系统提供的目录之前被搜索", "evidence": {"same_day": true, "patch_ids": ["e06531c74199ac8287e60a478732f2a1"], "statement_hash": "3fe68075d2af5f66aa86cec9975bd83f6f8d380307c7a98a165429881d8ce3f6"}, "url": "/docs/compare/?release=16.10#16.10-822bca3ae25fbb63", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "dddc18a83ab3fb87426d5cf379c1808e", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "确保 configure 的 --with-includes 和 --with-libraries 选项中列出的目录在系统提供的目录之前被搜索", "evidence": {"same_day": true, "patch_ids": ["e06531c74199ac8287e60a478732f2a1"], "statement_hash": "3fe68075d2af5f66aa86cec9975bd83f6f8d380307c7a98a165429881d8ce3f6"}, "url": "/docs/compare/?release=15.14#15.14-a8c2ab43f078c9f3", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "f4e258f01fdb78e9599679037ae1dfde", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "确保 configure 的 --with-includes 和 --with-libraries 选项中列出的目录在系统提供的目录之前被搜索", "evidence": {"same_day": true, "patch_ids": ["e06531c74199ac8287e60a478732f2a1"], "statement_hash": "3fe68075d2af5f66aa86cec9975bd83f6f8d380307c7a98a165429881d8ce3f6"}, "url": "/docs/compare/?release=13.22#13.22-78bdf9b34668a73f", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-eecaa3faa6751076", "cves": [], "html": "<p>修复 <span>configure</span> 对 <code>__cpuid()</code> 和 <code>__cpuidex()</code> 的检测（Lukas Fittl、Michael Paquier）<a href=\"https://postgr.es/c/60953d4cb\">§</a></p>\n<p><span>configure</span> 未能检测到这些 Windows 特有的函数，因此它们不会被使用，导致 CRC 计算比必要的慢，因为无法验证硬件指令的可用性。此错误的实际影响有限，因为 Windows 的生产构建通常不使用 Autoconf 工具链。</p>", "text": "修复 configure 对 __cpuid() 和 __cpuidex() 的检测（Lukas Fittl、Michael Paquier）§ configure 未能检测到这些 Windows 特有的函数，因此它们不会被使用，导致 CRC 计算比必要的慢，因为无法验证硬件指令的可用性。此错误的实际影响有限，因为 Windows 的生产构建通常不使用 Autoconf 工具链。", "title": "修复 configure 对 __cpuid() 和 __cpuidex() 的检测", "commits": ["60953d4cb"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "fa19ebacc70693dafcaa74770effa33b22b1165823552aef64f8cc1bc17b9d6f", "section_path": ["变更"], "commit_groups": [["1a5212775", "60953d4cb", "612f5b806", "8de56323c", "c1984be23", "cd2d52cc6", "d6ffc43f9"]], "identity_text": "Fix configure's checks for __cpuid() and __cpuidex() (Lukas Fittl, Michael Paquier) configure failed to detect these Windows-specific functions, so that they would not be used, leading to slower-than-necessary CRC computations since the availability of hardware instructions could not be verified. The practical impact of this error was limited, because production builds for Windows typically do not use the Autoconf toolchain.", "commit_aliases": ["1a5212775", "60953d4cb", "612f5b806", "8de56323c", "c1984be23", "cd2d52cc6", "d6ffc43f9"], "source_commits": ["60953d4cb"], "source_entry_id": "14.19/changes/041", "db_id": "251ab6b7a637a23285439e2814b4b7ff", "patch_ids": ["ae7561e3fbff19d94aa34e43f2e748e7"], "statement_hash": "436429453485323412a971d4862a8207948817d34496de399badd0a02929ae7c", "relations": [{"rule": 2, "type": "equivalent", "target": "29bd2073e7a4111518a779dbaefa2e3e", "evidence": {"same_day": true, "patch_ids": ["ae7561e3fbff19d94aa34e43f2e748e7"], "statement_hash": "436429453485323412a971d4862a8207948817d34496de399badd0a02929ae7c"}}, {"rule": 2, "type": "equivalent", "target": "3cf852fa32a8e042efe25f55af66dd6c", "evidence": {"same_day": true, "patch_ids": ["ae7561e3fbff19d94aa34e43f2e748e7"], "statement_hash": "436429453485323412a971d4862a8207948817d34496de399badd0a02929ae7c"}}, {"rule": 2, "type": "equivalent", "target": "ae69663d10e961545d5a76d2ee306d3d", "evidence": {"same_day": true, "patch_ids": ["ae7561e3fbff19d94aa34e43f2e748e7"], "statement_hash": "436429453485323412a971d4862a8207948817d34496de399badd0a02929ae7c"}}, {"rule": 2, "type": "equivalent", "target": "fd641a38bef3ee82086302f552abc5e6", "evidence": {"same_day": true, "patch_ids": ["ae7561e3fbff19d94aa34e43f2e748e7"], "statement_hash": "436429453485323412a971d4862a8207948817d34496de399badd0a02929ae7c"}}], "version": "14.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "29bd2073e7a4111518a779dbaefa2e3e", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "修复 configure 对 __cpuid() 和 __cpuidex() 的检测", "evidence": {"same_day": true, "patch_ids": ["ae7561e3fbff19d94aa34e43f2e748e7"], "statement_hash": "436429453485323412a971d4862a8207948817d34496de399badd0a02929ae7c"}, "url": "/docs/compare/?release=17.6#17.6-eacaf1a246bba2ef", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "fd641a38bef3ee82086302f552abc5e6", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "修复 configure 对 __cpuid() 和 __cpuidex() 的检测", "evidence": {"same_day": true, "patch_ids": ["ae7561e3fbff19d94aa34e43f2e748e7"], "statement_hash": "436429453485323412a971d4862a8207948817d34496de399badd0a02929ae7c"}, "url": "/docs/compare/?release=16.10#16.10-080893a97846b1bd", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "3cf852fa32a8e042efe25f55af66dd6c", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "修复 configure 对 __cpuid() 和 __cpuidex() 的检测", "evidence": {"same_day": true, "patch_ids": ["ae7561e3fbff19d94aa34e43f2e748e7"], "statement_hash": "436429453485323412a971d4862a8207948817d34496de399badd0a02929ae7c"}, "url": "/docs/compare/?release=15.14#15.14-eb8cfd40fc0a99a1", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "ae69663d10e961545d5a76d2ee306d3d", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "修复 configure 对 __cpuid() 和 __cpuidex() 的检测", "evidence": {"same_day": true, "patch_ids": ["ae7561e3fbff19d94aa34e43f2e748e7"], "statement_hash": "436429453485323412a971d4862a8207948817d34496de399badd0a02929ae7c"}, "url": "/docs/compare/?release=13.22#13.22-7d78ea3ba4066d49", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-6a8eab878898dc90", "cves": [], "html": "<p>修复在基于 Solaris 的平台上使用 <code>--with-pam</code> 选项时的构建失败（Tom Lane）<a href=\"https://postgr.es/c/868b39a54\">§</a></p>\n<p>Solaris 在 PAM 认证的 API 方面与其他 Unix 平台不一致。这表现为一个 <span>“<span>inconsistent pointer</span>”</span> 编译器警告，我们之前一直没有处理。但从 GCC 14 开始，默认情况下这是一个错误而不是警告，因此进行了修复。</p>", "text": "修复在基于 Solaris 的平台上使用 --with-pam 选项时的构建失败（Tom Lane）§ Solaris 在 PAM 认证的 API 方面与其他 Unix 平台不一致。这表现为一个 “inconsistent pointer” 编译器警告，我们之前一直没有处理。但从 GCC 14 开始，默认情况下这是一个错误而不是警告，因此进行了修复。", "title": "修复在基于 Solaris 的平台上使用 --with-pam 选项时的构建失败", "commits": ["868b39a54"], "section": "变更", "category": "bugfix", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "0eea5d6b1b4e002aafddeb92c71bf3ec996e3719a3042ae0695b50be0a48ea7c", "section_path": ["变更"], "commit_groups": [["1ccb3851d", "3d039b53a", "635a85627", "868b39a54", "b252ce311", "e4d585455", "e6dfd068e"]], "identity_text": "Fix build failure with --with-pam option on Solaris-based platforms (Tom Lane) Solaris is inconsistent with other Unix platforms about the API for PAM authentication. This manifested as an inconsistent pointer compiler warning, which we never did anything about. But as of GCC 14 it's an error not warning by default, so fix it.", "commit_aliases": ["1ccb3851d", "3d039b53a", "635a85627", "868b39a54", "b252ce311", "e4d585455", "e6dfd068e"], "source_commits": ["868b39a54"], "source_entry_id": "14.19/changes/042", "db_id": "2f32f28098a657c73aaba748539500ac", "patch_ids": ["51251ad5ddb09ec4180604be0ea7e244"], "statement_hash": "5b2c4725aa7102bdd6caa231ab00902bf447c41bcab6e88828baedd7a8e8cad8", "relations": [{"rule": 2, "type": "equivalent", "target": "0499fba6edeafd06c1aacb74337ee540", "evidence": {"same_day": true, "patch_ids": ["51251ad5ddb09ec4180604be0ea7e244"], "statement_hash": "5b2c4725aa7102bdd6caa231ab00902bf447c41bcab6e88828baedd7a8e8cad8"}}, {"rule": 2, "type": "equivalent", "target": "34538e54ec7992f9e730ad55c884d2ab", "evidence": {"same_day": true, "patch_ids": ["51251ad5ddb09ec4180604be0ea7e244"], "statement_hash": "5b2c4725aa7102bdd6caa231ab00902bf447c41bcab6e88828baedd7a8e8cad8"}}, {"rule": 2, "type": "equivalent", "target": "8e3b2f44c27aa265f52e60bda0ce7558", "evidence": {"same_day": true, "patch_ids": ["51251ad5ddb09ec4180604be0ea7e244"], "statement_hash": "5b2c4725aa7102bdd6caa231ab00902bf447c41bcab6e88828baedd7a8e8cad8"}}, {"rule": 2, "type": "equivalent", "target": "b293fa0d4e1db1ca044df6a91593f3a7", "evidence": {"same_day": true, "patch_ids": ["51251ad5ddb09ec4180604be0ea7e244"], "statement_hash": "5b2c4725aa7102bdd6caa231ab00902bf447c41bcab6e88828baedd7a8e8cad8"}}], "version": "14.19", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "34538e54ec7992f9e730ad55c884d2ab", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "修复在基于 Solaris 的平台上使用 --with-pam 选项时的构建失败", "evidence": {"same_day": true, "patch_ids": ["51251ad5ddb09ec4180604be0ea7e244"], "statement_hash": "5b2c4725aa7102bdd6caa231ab00902bf447c41bcab6e88828baedd7a8e8cad8"}, "url": "/docs/compare/?release=17.6#17.6-5dde7f75a39e8421", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "8e3b2f44c27aa265f52e60bda0ce7558", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "修复在基于 Solaris 的平台上使用 --with-pam 选项时的构建失败", "evidence": {"same_day": true, "patch_ids": ["51251ad5ddb09ec4180604be0ea7e244"], "statement_hash": "5b2c4725aa7102bdd6caa231ab00902bf447c41bcab6e88828baedd7a8e8cad8"}, "url": "/docs/compare/?release=16.10#16.10-032b8580605d61ab", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "0499fba6edeafd06c1aacb74337ee540", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "修复在基于 Solaris 的平台上使用 --with-pam 选项时的构建失败", "evidence": {"same_day": true, "patch_ids": ["51251ad5ddb09ec4180604be0ea7e244"], "statement_hash": "5b2c4725aa7102bdd6caa231ab00902bf447c41bcab6e88828baedd7a8e8cad8"}, "url": "/docs/compare/?release=15.14#15.14-3cf883176e770d3b", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "b293fa0d4e1db1ca044df6a91593f3a7", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "修复在基于 Solaris 的平台上使用 --with-pam 选项时的构建失败", "evidence": {"same_day": true, "patch_ids": ["51251ad5ddb09ec4180604be0ea7e244"], "statement_hash": "5b2c4725aa7102bdd6caa231ab00902bf447c41bcab6e88828baedd7a8e8cad8"}, "url": "/docs/compare/?release=13.22#13.22-111a6307eb7d3da5", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-11114cd6fd992fb1", "cves": [], "html": "<p>使我们的代码可移植到 GNU Hurd（Michael Banck、Christoph Berg、Samuel Thibault）<a href=\"https://postgr.es/c/71d71ac4d\">§</a></p>\n<p>修复了关于 <code>IOV_MAX</code> 和 <code>O_RDONLY</code> 在 Hurd 上不成立的假设。</p>", "text": "使我们的代码可移植到 GNU Hurd（Michael Banck、Christoph Berg、Samuel Thibault）§ 修复了关于 IOV_MAX 和 O_RDONLY 在 Hurd 上不成立的假设。", "title": "使我们的代码可移植到 GNU Hurd", "commits": ["71d71ac4d"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "a9ec2061653d13034a7cbd6c22ded7829397964fa774f1867bd3999d6419a26b", "section_path": ["变更"], "commit_groups": [["0991249d7", "1fd772d19", "581305a46", "d25d392e8"], ["0fb496c70", "29213636e", "29c54ea7b", "3a2617e4f", "45c527662", "71d71ac4d", "d0a695cf4"]], "identity_text": "Make our code portable to GNU Hurd (Michael Banck, Christoph Berg, Samuel Thibault) Fix assumptions about IOV_MAX and O_RDONLY that don't hold on Hurd.", "commit_aliases": ["0991249d7", "0fb496c70", "1fd772d19", "29213636e", "29c54ea7b", "3a2617e4f", "45c527662", "581305a46", "71d71ac4d", "d0a695cf4", "d25d392e8"], "source_commits": ["1fd772d19", "71d71ac4d"], "source_entry_id": "14.19/changes/043", "db_id": "55057baacea65e22aa2c84955c4998c8", "patch_ids": ["2535ac32e138397cf0c98158c84aeb0a", "f1de18aec4c0de6008e0f2a25c0560e5"], "statement_hash": "914bd0426349ac821f65b461aee5bd9d6c5f0e5c5a53d3724248d6f56924302b", "relations": [{"rule": 2, "type": "equivalent", "target": "04457f149a6bdf7d2d93fc2f18ea6daa", "evidence": {"same_day": true, "patch_ids": ["2535ac32e138397cf0c98158c84aeb0a", "f1de18aec4c0de6008e0f2a25c0560e5"], "statement_hash": "914bd0426349ac821f65b461aee5bd9d6c5f0e5c5a53d3724248d6f56924302b"}}, {"rule": 2, "type": "equivalent", "target": "407f6f9621d44a5c87ebd20b33673e61", "evidence": {"same_day": true, "patch_ids": ["2535ac32e138397cf0c98158c84aeb0a", "f1de18aec4c0de6008e0f2a25c0560e5"], "statement_hash": "914bd0426349ac821f65b461aee5bd9d6c5f0e5c5a53d3724248d6f56924302b"}}, {"rule": 2, "type": "equivalent", "target": "90ebf543c131ee89f82ca4eb11b97f07", "evidence": {"same_day": true, "patch_ids": ["2535ac32e138397cf0c98158c84aeb0a", "f1de18aec4c0de6008e0f2a25c0560e5"], "statement_hash": "914bd0426349ac821f65b461aee5bd9d6c5f0e5c5a53d3724248d6f56924302b"}}, {"rule": 2, "type": "equivalent", "target": "cc55ee115ee270685c5f83706b87c17e", "evidence": {"same_day": true, "patch_ids": ["2535ac32e138397cf0c98158c84aeb0a", "f1de18aec4c0de6008e0f2a25c0560e5"], "statement_hash": "914bd0426349ac821f65b461aee5bd9d6c5f0e5c5a53d3724248d6f56924302b"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "407f6f9621d44a5c87ebd20b33673e61", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "使我们的代码可移植到 GNU Hurd", "evidence": {"same_day": true, "patch_ids": ["2535ac32e138397cf0c98158c84aeb0a", "f1de18aec4c0de6008e0f2a25c0560e5"], "statement_hash": "914bd0426349ac821f65b461aee5bd9d6c5f0e5c5a53d3724248d6f56924302b"}, "url": "/docs/compare/?release=17.6#17.6-f785f5137d94a1cd", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "cc55ee115ee270685c5f83706b87c17e", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "使我们的代码可移植到 GNU Hurd", "evidence": {"same_day": true, "patch_ids": ["2535ac32e138397cf0c98158c84aeb0a", "f1de18aec4c0de6008e0f2a25c0560e5"], "statement_hash": "914bd0426349ac821f65b461aee5bd9d6c5f0e5c5a53d3724248d6f56924302b"}, "url": "/docs/compare/?release=16.10#16.10-cc382785968c2ffd", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "90ebf543c131ee89f82ca4eb11b97f07", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "使我们的代码可移植到 GNU Hurd", "evidence": {"same_day": true, "patch_ids": ["2535ac32e138397cf0c98158c84aeb0a", "f1de18aec4c0de6008e0f2a25c0560e5"], "statement_hash": "914bd0426349ac821f65b461aee5bd9d6c5f0e5c5a53d3724248d6f56924302b"}, "url": "/docs/compare/?release=15.14#15.14-b3a664a9f7d74338", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "04457f149a6bdf7d2d93fc2f18ea6daa", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "使我们的代码可移植到 GNU Hurd", "evidence": {"same_day": true, "patch_ids": ["2535ac32e138397cf0c98158c84aeb0a", "f1de18aec4c0de6008e0f2a25c0560e5"], "statement_hash": "914bd0426349ac821f65b461aee5bd9d6c5f0e5c5a53d3724248d6f56924302b"}, "url": "/docs/compare/?release=13.22#13.22-ad71d79d923d3c35", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-ca120c363b24002c", "cves": [], "html": "<p>使我们对 <code>memset_s()</code> 的使用严格符合 C11 标准（Tom Lane）<a href=\"https://postgr.es/c/5355a2400\">§</a></p>\n<p>这可以避免某些平台上的编译失败。</p>", "text": "使我们对 memset_s() 的使用严格符合 C11 标准（Tom Lane）§ 这可以避免某些平台上的编译失败。", "title": "使我们对 memset_s() 的使用严格符合 C11 标准", "commits": ["5355a2400"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "cf537d70e2897f94a0af044b1fb76238734c7215e44e521ba8f79024f59f0227", "section_path": ["变更"], "commit_groups": [["00652b3c9", "4b53cb493", "9bc2d37cc", "a1e0e7076"], ["12eee85e5", "253cf661c", "5355a2400"]], "identity_text": "Make our usage of memset_s() conform strictly to the C11 standard (Tom Lane) This avoids compile failures on some platforms.", "commit_aliases": ["00652b3c9", "12eee85e5", "253cf661c", "4b53cb493", "5355a2400", "9bc2d37cc", "a1e0e7076"], "source_commits": ["12eee85e5", "a1e0e7076"], "source_entry_id": "14.19/changes/044", "db_id": "873c6db3919db9846ad325ffc8a87d43", "patch_ids": ["152415ddd6ce0d088df0dfdd8775ba61", "c5fb5cc7de1c19c1fdaac7e3b056d35a"], "statement_hash": "57cf2dc152a482fefba1092981e5e8334e09bb8ee3daef8bc79b04e5b32dd32f", "relations": [{"rule": 2, "type": "equivalent", "target": "5fcf76da3b8fa511b807f6218e5e00a0", "evidence": {"same_day": true, "patch_ids": ["152415ddd6ce0d088df0dfdd8775ba61", "c5fb5cc7de1c19c1fdaac7e3b056d35a"], "statement_hash": "57cf2dc152a482fefba1092981e5e8334e09bb8ee3daef8bc79b04e5b32dd32f"}}, {"rule": 2, "type": "equivalent", "target": "b19c16a22c915571a3272abb63ca64fd", "evidence": {"same_day": true, "patch_ids": ["152415ddd6ce0d088df0dfdd8775ba61", "c5fb5cc7de1c19c1fdaac7e3b056d35a"], "statement_hash": "57cf2dc152a482fefba1092981e5e8334e09bb8ee3daef8bc79b04e5b32dd32f"}}, {"rule": 2, "type": "equivalent", "target": "c81119c2c93568d779326ae147992118", "evidence": {"same_day": true, "patch_ids": ["152415ddd6ce0d088df0dfdd8775ba61", "c5fb5cc7de1c19c1fdaac7e3b056d35a"], "statement_hash": "57cf2dc152a482fefba1092981e5e8334e09bb8ee3daef8bc79b04e5b32dd32f"}}, {"rule": 2, "type": "equivalent", "target": "fb508b12b02308fe0bfa2df52ebf175a", "evidence": {"same_day": true, "patch_ids": ["152415ddd6ce0d088df0dfdd8775ba61", "c5fb5cc7de1c19c1fdaac7e3b056d35a"], "statement_hash": "57cf2dc152a482fefba1092981e5e8334e09bb8ee3daef8bc79b04e5b32dd32f"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "b19c16a22c915571a3272abb63ca64fd", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "使我们对 memset_s() 的使用严格符合 C11 标准", "evidence": {"same_day": true, "patch_ids": ["152415ddd6ce0d088df0dfdd8775ba61", "c5fb5cc7de1c19c1fdaac7e3b056d35a"], "statement_hash": "57cf2dc152a482fefba1092981e5e8334e09bb8ee3daef8bc79b04e5b32dd32f"}, "url": "/docs/compare/?release=17.6#17.6-ca120c363b24002c", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "c81119c2c93568d779326ae147992118", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "使我们对 memset_s() 的使用严格符合 C11 标准", "evidence": {"same_day": true, "patch_ids": ["152415ddd6ce0d088df0dfdd8775ba61", "c5fb5cc7de1c19c1fdaac7e3b056d35a"], "statement_hash": "57cf2dc152a482fefba1092981e5e8334e09bb8ee3daef8bc79b04e5b32dd32f"}, "url": "/docs/compare/?release=16.10#16.10-86cb2dd2f5e6e262", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "fb508b12b02308fe0bfa2df52ebf175a", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "使我们对 memset_s() 的使用严格符合 C11 标准", "evidence": {"same_day": true, "patch_ids": ["152415ddd6ce0d088df0dfdd8775ba61", "c5fb5cc7de1c19c1fdaac7e3b056d35a"], "statement_hash": "57cf2dc152a482fefba1092981e5e8334e09bb8ee3daef8bc79b04e5b32dd32f"}, "url": "/docs/compare/?release=15.14#15.14-ca120c363b24002c", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "5fcf76da3b8fa511b807f6218e5e00a0", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "使我们对 memset_s() 的使用严格遵循 C11 标准", "evidence": {"same_day": true, "patch_ids": ["152415ddd6ce0d088df0dfdd8775ba61", "c5fb5cc7de1c19c1fdaac7e3b056d35a"], "statement_hash": "57cf2dc152a482fefba1092981e5e8334e09bb8ee3daef8bc79b04e5b32dd32f"}, "url": "/docs/compare/?release=13.22#13.22-e5923b36ae31fff1", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-c33c12968657cbdf", "cves": [], "html": "<p>防止 JSONB 比较代码中的未初始化值编译器警告（Tom Lane）<a href=\"https://postgr.es/c/8254b7e33\">§</a></p>", "text": "防止 JSONB 比较代码中的未初始化值编译器警告（Tom Lane）§", "title": "防止 JSONB 比较代码中的未初始化值编译器警告", "commits": ["8254b7e33"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "c5274396cb6bdfb206ebba2430d25a1304abf8da213217be5778b57149c1c6ab", "section_path": ["变更"], "commit_groups": [["0b6dfce0c", "5a2139a90", "5db55e13f", "6c93bf735", "8254b7e33", "aad1617b7", "f32e45641"]], "identity_text": "Prevent uninitialized-value compiler warnings in JSONB comparison code (Tom Lane)", "commit_aliases": ["0b6dfce0c", "5a2139a90", "5db55e13f", "6c93bf735", "8254b7e33", "aad1617b7", "f32e45641"], "source_commits": ["8254b7e33"], "source_entry_id": "14.19/changes/045", "db_id": "b1e2df399f2876369e269619f20874cf", "patch_ids": ["1c7c8e4d06e65980ebc06c130f9a5388"], "statement_hash": "bb3884425060926db4a5243efc395f3fbdd862589ab5ba43c574d387eb4e72ff", "relations": [{"rule": 2, "type": "equivalent", "target": "12f4afd596aa7bc04fb91eeb32141bfd", "evidence": {"same_day": true, "patch_ids": ["1c7c8e4d06e65980ebc06c130f9a5388"], "statement_hash": "bb3884425060926db4a5243efc395f3fbdd862589ab5ba43c574d387eb4e72ff"}}, {"rule": 2, "type": "equivalent", "target": "46c4757b31bbf1593c2db36feb6338f3", "evidence": {"same_day": true, "patch_ids": ["1c7c8e4d06e65980ebc06c130f9a5388"], "statement_hash": "bb3884425060926db4a5243efc395f3fbdd862589ab5ba43c574d387eb4e72ff"}}, {"rule": 2, "type": "equivalent", "target": "98469d2b32d89cbfb4f890b16567ed67", "evidence": {"same_day": true, "patch_ids": ["1c7c8e4d06e65980ebc06c130f9a5388"], "statement_hash": "bb3884425060926db4a5243efc395f3fbdd862589ab5ba43c574d387eb4e72ff"}}, {"rule": 2, "type": "equivalent", "target": "e5f47b223fa9be4f544c50b8b1d87f45", "evidence": {"same_day": true, "patch_ids": ["1c7c8e4d06e65980ebc06c130f9a5388"], "statement_hash": "bb3884425060926db4a5243efc395f3fbdd862589ab5ba43c574d387eb4e72ff"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "98469d2b32d89cbfb4f890b16567ed67", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "防止 JSONB 比较代码中的未初始化值编译器警告", "evidence": {"same_day": true, "patch_ids": ["1c7c8e4d06e65980ebc06c130f9a5388"], "statement_hash": "bb3884425060926db4a5243efc395f3fbdd862589ab5ba43c574d387eb4e72ff"}, "url": "/docs/compare/?release=17.6#17.6-f6db88c1769ddeb0", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "12f4afd596aa7bc04fb91eeb32141bfd", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "防止 JSONB 比较代码中的未初始化值编译器警告", "evidence": {"same_day": true, "patch_ids": ["1c7c8e4d06e65980ebc06c130f9a5388"], "statement_hash": "bb3884425060926db4a5243efc395f3fbdd862589ab5ba43c574d387eb4e72ff"}, "url": "/docs/compare/?release=16.10#16.10-e2d0e1e515d3b0ad", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "e5f47b223fa9be4f544c50b8b1d87f45", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "防止 JSONB 比较代码中的未初始化值编译器警告", "evidence": {"same_day": true, "patch_ids": ["1c7c8e4d06e65980ebc06c130f9a5388"], "statement_hash": "bb3884425060926db4a5243efc395f3fbdd862589ab5ba43c574d387eb4e72ff"}, "url": "/docs/compare/?release=15.14#15.14-74c38b2263bb46b0", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "46c4757b31bbf1593c2db36feb6338f3", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "防止 JSONB 比较代码中的未初始化值编译器警告", "evidence": {"same_day": true, "patch_ids": ["1c7c8e4d06e65980ebc06c130f9a5388"], "statement_hash": "bb3884425060926db4a5243efc395f3fbdd862589ab5ba43c574d387eb4e72ff"}, "url": "/docs/compare/?release=13.22#13.22-37f5c79edb1294a2", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-9358876efce4e3f8", "cves": [], "html": "<p>避免在使用 <span>libxml2</span> 2.14 及更高版本构建时出现弃用警告（Michael Paquier）<a href=\"https://postgr.es/c/ac166b19a\">§</a></p>", "text": "避免在使用 libxml2 2.14 及更高版本构建时出现弃用警告（Michael Paquier）§", "title": "避免在使用 libxml2 2.14 及更高版本构建时出现弃用警告", "commits": ["ac166b19a"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "9809ceb625b77bebd408e82d498d329cf10b63d9b02715a7d75d97089251559c", "section_path": ["变更"], "commit_groups": [["75c1eb60b", "8aa54aa7e", "8d1071e7d", "ac166b19a", "c911e7802", "d24a96ce2", "e688cfc2b"]], "identity_text": "Avoid deprecation warnings when building with libxml2 2.14 and later (Michael Paquier)", "commit_aliases": ["75c1eb60b", "8aa54aa7e", "8d1071e7d", "ac166b19a", "c911e7802", "d24a96ce2", "e688cfc2b"], "source_commits": ["ac166b19a"], "source_entry_id": "14.19/changes/046", "db_id": "805b40146a55dc1ae0f3eb5524b13343", "patch_ids": ["d218f738bb6ade31c43d956e4b138087"], "statement_hash": "4dbd8cab24eabbe57fdd20140ea36da838bf925b78f64e2cd9c47ed68ccce3ce", "relations": [{"rule": 2, "type": "equivalent", "target": "45d03032c2bff698d9256a3bd780ee2f", "evidence": {"same_day": true, "patch_ids": ["d218f738bb6ade31c43d956e4b138087"], "statement_hash": "4dbd8cab24eabbe57fdd20140ea36da838bf925b78f64e2cd9c47ed68ccce3ce"}}, {"rule": 2, "type": "equivalent", "target": "78b9e49af419b93ce85ef45a30af57ae", "evidence": {"same_day": true, "patch_ids": ["d218f738bb6ade31c43d956e4b138087"], "statement_hash": "4dbd8cab24eabbe57fdd20140ea36da838bf925b78f64e2cd9c47ed68ccce3ce"}}, {"rule": 2, "type": "equivalent", "target": "da6577a15e3e7e774b8a8e0e6560b995", "evidence": {"same_day": true, "patch_ids": ["d218f738bb6ade31c43d956e4b138087"], "statement_hash": "4dbd8cab24eabbe57fdd20140ea36da838bf925b78f64e2cd9c47ed68ccce3ce"}}, {"rule": 2, "type": "equivalent", "target": "e0a775f6c43ee0c2c107e429336236f0", "evidence": {"same_day": true, "patch_ids": ["d218f738bb6ade31c43d956e4b138087"], "statement_hash": "4dbd8cab24eabbe57fdd20140ea36da838bf925b78f64e2cd9c47ed68ccce3ce"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "e0a775f6c43ee0c2c107e429336236f0", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "避免在使用 libxml2 2.14 及更高版本构建时出现弃用警告", "evidence": {"same_day": true, "patch_ids": ["d218f738bb6ade31c43d956e4b138087"], "statement_hash": "4dbd8cab24eabbe57fdd20140ea36da838bf925b78f64e2cd9c47ed68ccce3ce"}, "url": "/docs/compare/?release=17.6#17.6-75a9055620549575", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "78b9e49af419b93ce85ef45a30af57ae", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "避免在使用 libxml2 2.14 及更高版本构建时出现弃用警告", "evidence": {"same_day": true, "patch_ids": ["d218f738bb6ade31c43d956e4b138087"], "statement_hash": "4dbd8cab24eabbe57fdd20140ea36da838bf925b78f64e2cd9c47ed68ccce3ce"}, "url": "/docs/compare/?release=16.10#16.10-d8aefce5a76533ce", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "da6577a15e3e7e774b8a8e0e6560b995", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "避免在使用 libxml2 2.14 及更高版本构建时出现弃用警告", "evidence": {"same_day": true, "patch_ids": ["d218f738bb6ade31c43d956e4b138087"], "statement_hash": "4dbd8cab24eabbe57fdd20140ea36da838bf925b78f64e2cd9c47ed68ccce3ce"}, "url": "/docs/compare/?release=15.14#15.14-232cf3d64f572b66", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "45d03032c2bff698d9256a3bd780ee2f", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "避免在使用 libxml2 2.14 及更高版本构建时出现弃用警告", "evidence": {"same_day": true, "patch_ids": ["d218f738bb6ade31c43d956e4b138087"], "statement_hash": "4dbd8cab24eabbe57fdd20140ea36da838bf925b78f64e2cd9c47ed68ccce3ce"}, "url": "/docs/compare/?release=13.22#13.22-31ea77e2f2c5453d", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}, {"id": "14.19-05a143bb858d93f4", "cves": [], "html": "<p>避免在 C++ 下编译 <code>pg_locale.h</code> 时的问题（John Naylor）<a href=\"https://postgr.es/c/a4f891b96\">§</a></p>\n<p><span>PostgreSQL</span> 头文件通常需要用 <code>extern \"C\" { ... }</code> 包裹才能在用 C++ 编写的扩展中被包含。对于 <code>pg_locale.h</code>，由于它使用了 <span>libicu</span> 头文件，这会失败，但我们可以通过在这些头文件中抑制仅限 C++ 的声明来解决此问题。想要使用 <span>libicu</span> 的 C++ API 的 C++ 扩展可以在包含 <code>pg_locale.h</code> 之前先包含 <span>libicu</span> 头文件。</p>", "text": "避免在 C++ 下编译 pg_locale.h 时的问题（John Naylor）§ PostgreSQL 头文件通常需要用 extern \"C\" { ... } 包裹才能在用 C++ 编写的扩展中被包含。对于 pg_locale.h，由于它使用了 libicu 头文件，这会失败，但我们可以通过在这些头文件中抑制仅限 C++ 的声明来解决此问题。想要使用 libicu 的 C++ API 的 C++ 扩展可以在包含 pg_locale.h 之前先包含 libicu 头文件。", "title": "避免在 C++ 下编译 pg_locale.h 时的问题", "commits": ["a4f891b96"], "section": "变更", "category": "improvement", "source_url": "/docs/release/14.19/#ZH-AUTO-RELEASE-14-SECT2-8", "source_hash": "763d50cefb27cdb4e3864bf6788bc25d8832882b64206a4353bbd5d6cddfac0d", "section_path": ["变更"], "commit_groups": [["21ae8fc5f", "90bfae9f9", "9560c1ec1", "a4f891b96", "aae9aad19", "baacfb9e6", "dd2926207"], ["ed26c4e25"]], "identity_text": "Avoid problems when compiling pg_locale.h under C++ (John Naylor) PostgreSQL header files generally need to be wrapped in extern \"C\" { ... } in order to be included in extensions written in C++. This failed for pg_locale.h because of its use of libicu headers, but we can work around that by suppressing C++-only declarations in those headers. C++ extensions that want to use libicu's C++ APIs can do so by including the libicu headers ahead of pg_locale.h.", "commit_aliases": ["21ae8fc5f", "90bfae9f9", "9560c1ec1", "a4f891b96", "aae9aad19", "baacfb9e6", "dd2926207", "ed26c4e25"], "source_commits": ["a4f891b96", "ed26c4e25"], "source_entry_id": "14.19/changes/047", "db_id": "92057801d245043eab99578a5e8ae371", "patch_ids": ["88c09a656232275f07341f46aa56ea44", "f26481addabc1a0f486b4666c91adef4"], "statement_hash": "00a1da47c6930b9ac721c6e6a20d12238e220cb05ad7ed65e7dd569cb041587a", "relations": [{"rule": 2, "type": "equivalent", "target": "465b03b5786c3ace1f8e24ae77dc1b96", "evidence": {"same_day": true, "patch_ids": ["88c09a656232275f07341f46aa56ea44", "f26481addabc1a0f486b4666c91adef4"], "statement_hash": "00a1da47c6930b9ac721c6e6a20d12238e220cb05ad7ed65e7dd569cb041587a"}}, {"rule": 2, "type": "equivalent", "target": "574d5dbd83a7b7aee91f31efbb05eda7", "evidence": {"same_day": true, "patch_ids": ["88c09a656232275f07341f46aa56ea44", "f26481addabc1a0f486b4666c91adef4"], "statement_hash": "00a1da47c6930b9ac721c6e6a20d12238e220cb05ad7ed65e7dd569cb041587a"}}, {"rule": 2, "type": "equivalent", "target": "ed028961b78fd9d0dad5b55f446f151f", "evidence": {"same_day": true, "patch_ids": ["88c09a656232275f07341f46aa56ea44", "f26481addabc1a0f486b4666c91adef4"], "statement_hash": "00a1da47c6930b9ac721c6e6a20d12238e220cb05ad7ed65e7dd569cb041587a"}}, {"rule": 2, "type": "equivalent", "target": "f8e843a90706d7c201b6f03324020afe", "evidence": {"same_day": true, "patch_ids": ["88c09a656232275f07341f46aa56ea44", "f26481addabc1a0f486b4666c91adef4"], "statement_hash": "00a1da47c6930b9ac721c6e6a20d12238e220cb05ad7ed65e7dd569cb041587a"}}], "version": "14.19", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "465b03b5786c3ace1f8e24ae77dc1b96", "kind": "equivalent", "version": "17.6", "label": "17.6", "title": "避免在 C++ 下编译 pg_locale.h 时的问题", "evidence": {"same_day": true, "patch_ids": ["88c09a656232275f07341f46aa56ea44", "f26481addabc1a0f486b4666c91adef4"], "statement_hash": "00a1da47c6930b9ac721c6e6a20d12238e220cb05ad7ed65e7dd569cb041587a"}, "url": "/docs/compare/?release=17.6#17.6-a867b8097ecb2002", "source_url": "/docs/release/17.6/#RELEASE-17-6-CHANGES"}, {"db_id": "f8e843a90706d7c201b6f03324020afe", "kind": "equivalent", "version": "16.10", "label": "16.10", "title": "避免在 C++ 下编译 pg_locale.h 时的问题", "evidence": {"same_day": true, "patch_ids": ["88c09a656232275f07341f46aa56ea44", "f26481addabc1a0f486b4666c91adef4"], "statement_hash": "00a1da47c6930b9ac721c6e6a20d12238e220cb05ad7ed65e7dd569cb041587a"}, "url": "/docs/compare/?release=16.10#16.10-11ac5fb8acc15e0d", "source_url": "/docs/release/16.10/#RELEASE-16-10-CHANGES"}, {"db_id": "ed028961b78fd9d0dad5b55f446f151f", "kind": "equivalent", "version": "15.14", "label": "15.14", "title": "避免在 C++ 下编译 pg_locale.h 时的问题", "evidence": {"same_day": true, "patch_ids": ["88c09a656232275f07341f46aa56ea44", "f26481addabc1a0f486b4666c91adef4"], "statement_hash": "00a1da47c6930b9ac721c6e6a20d12238e220cb05ad7ed65e7dd569cb041587a"}, "url": "/docs/compare/?release=15.14#15.14-021358a7a6479c6b", "source_url": "/docs/release/15.14/#ZH-AUTO-RELEASE-15-SECT2-8"}, {"db_id": "574d5dbd83a7b7aee91f31efbb05eda7", "kind": "equivalent", "version": "13.22", "label": "13.22", "title": "避免在 C++ 下编译 pg_locale.h 时的问题", "evidence": {"same_day": true, "patch_ids": ["88c09a656232275f07341f46aa56ea44", "f26481addabc1a0f486b4666c91adef4"], "statement_hash": "00a1da47c6930b9ac721c6e6a20d12238e220cb05ad7ed65e7dd569cb041587a"}, "url": "/docs/compare/?release=13.22#13.22-6b02ec42506b3a29", "source_url": "/docs/release/13.22/#id-1.11.6.7.6"}]}]}], "stats": [{"key": "all", "label": "全部变更", "count": 47}, {"key": "feature", "label": "新功能", "count": 0}, {"key": "bugfix", "label": "BUG 修复", "count": 12}, {"key": "security", "label": "安全相关", "count": 3}, {"key": "performance", "label": "性能改进", "count": 0}, {"key": "compatibility", "label": "兼容性变化", "count": 0}, {"key": "improvement", "label": "其他改进", "count": 32}], "total": 47, "release_count": 1, "cross_major": false, "cve_count": 5, "cves": [{"id": "CVE-2025-8715", "url": "https://www.postgresql.org/support/security/CVE-2025-8715/", "fixed": {"13": "13.22", "14": "14.19", "15": "15.14", "16": "16.10", "17": "17.6"}, "score": 8.8, "title": "在 pg_dump 输出的注释中，将名称中包含的换行符转换为空格", "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "cna_url": "https://cveawg.mitre.org/api/cve/CVE-2025-8715", "affected": {"13": "13", "14": "14", "15": "15", "16": "16", "17": "17"}, "component": "core server", "published": {"13": "2025-08-14", "14": "2025-08-14", "15": "2025-08-14", "16": "2025-08-14", "17": "2025-08-14"}, "introduced": {}, "cvss_version": "3.0", "description_en": "Improper neutralization of newlines in pg_dump in PostgreSQL allows a user of the origin server to inject arbitrary code for restore-time execution as the client operating system account running psql to restore the dump, via psql meta-commands inside a purpose-crafted object name. The same attacks can achieve SQL injection as a superuser of the restore target server. pg_dumpall, pg_restore, and pg_upgrade are also affected. Versions before PostgreSQL 17.6, 16.10, 15.14, 14.19, and 13.22 are affected. Versions before 11.20 are unaffected. CVE-2012-0868 had fixed this class of problem, but version 11.20 reintroduced it.", "affected_ranges": [{"from": "11.20", "until": "13.22"}, {"from": "14", "until": "14.19"}, {"from": "15", "until": "15.14"}, {"from": "16", "until": "16.10"}, {"from": "17", "until": "17.6"}], "first_published": "2025-08-14", "fixed_version": "14.19"}, {"id": "CVE-2025-8714", "url": "https://www.postgresql.org/support/security/CVE-2025-8714/", "fixed": {"13": "13.22", "14": "14.19", "15": "15.14", "16": "16.10", "17": "17.6"}, "score": 8.8, "title": "防止 pg_dump 脚本被用于攻击执行恢复的用户", "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "cna_url": "https://cveawg.mitre.org/api/cve/CVE-2025-8714", "affected": {"13": "13", "14": "14", "15": "15", "16": "16", "17": "17"}, "component": "core server", "published": {"13": "2025-08-14", "14": "2025-08-14", "15": "2025-08-14", "16": "2025-08-14", "17": "2025-08-14"}, "introduced": {}, "cvss_version": "3.0", "description_en": "Untrusted data inclusion in pg_dump in PostgreSQL allows a malicious superuser of the origin server to inject arbitrary code for restore-time execution as the client operating system account running psql to restore the dump, via psql meta-commands. pg_dumpall is also affected. pg_restore is affected when used to generate a plain-format dump. This is similar to MySQL CVE-2024-21096. Versions before PostgreSQL 17.6, 16.10, 15.14, 14.19, and 13.22 are affected.", "affected_ranges": [{"from": "0", "until": "13.22"}, {"from": "14", "until": "14.19"}, {"from": "15", "until": "15.14"}, {"from": "16", "until": "16.10"}, {"from": "17", "until": "17.6"}], "first_published": "2025-08-14", "fixed_version": "14.19"}, {"id": "CVE-2017-7484", "url": "https://www.postgresql.org/support/security/CVE-2017-7484/", "fixed": {"9.2": "9.2.21", "9.3": "9.3.17", "9.4": "9.4.12", "9.5": "9.5.7", "9.6": "9.6.3"}, "score": 4.3, "title": "加强规划器估算函数中的安全检查", "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "affected": {"9.2": "9.2", "9.3": "9.3", "9.4": "9.4", "9.5": "9.5", "9.6": "9.6"}, "component": "core server", "published": {"9.2": "2017-05-11", "9.3": "2017-05-11", "9.4": "2017-05-11", "9.5": "2017-05-11", "9.6": "2017-05-11"}, "introduced": {}, "cvss_version": "3.0", "description_en": "", "first_published": "2017-05-11", "fixed_version": ""}, {"id": "CVE-2025-8713", "url": "https://www.postgresql.org/support/security/CVE-2025-8713/", "fixed": {"13": "13.22", "14": "14.19", "15": "15.14", "16": "16.10", "17": "17.6"}, "score": 3.1, "title": "加强规划器估算函数中的安全检查", "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N", "cna_url": "https://cveawg.mitre.org/api/cve/CVE-2025-8713", "affected": {"13": "13", "14": "14", "15": "15", "16": "16", "17": "17"}, "component": "core server", "published": {"13": "2025-08-14", "14": "2025-08-14", "15": "2025-08-14", "16": "2025-08-14", "17": "2025-08-14"}, "introduced": {}, "cvss_version": "3.0", "description_en": "PostgreSQL optimizer statistics allow a user to read sampled data within a view that the user cannot access. Separately, statistics allow a user to read sampled data that a row security policy intended to hide. PostgreSQL maintains statistics for tables by sampling data available in columns; this data is consulted during the query planning process. Prior to this release, a user could craft a leaky operator that bypassed view access control lists (ACLs) and bypassed row security policies in partitioning or table inheritance hierarchies. Reachable statistics data notably included histograms and most-common-values lists. CVE-2017-7484 and CVE-2019-10130 intended to close this class of vulnerability, but this gap remained. Versions before PostgreSQL 17.6, 16.10, 15.14, 14.19, and 13.22 are affected.", "affected_ranges": [{"from": "0", "until": "13.22"}, {"from": "14", "until": "14.19"}, {"from": "15", "until": "15.14"}, {"from": "16", "until": "16.10"}, {"from": "17", "until": "17.6"}], "first_published": "2025-08-14", "fixed_version": "14.19"}, {"id": "CVE-2012-0868", "url": "https://www.postgresql.org/support/security/CVE-2012-0868/", "fixed": {"8.3": "8.3.18", "8.4": "8.4.11", "9.0": "9.0.7", "9.1": "9.1.3"}, "score": null, "title": "在 pg_dump 输出的注释中，将名称中包含的换行符转换为空格", "vector": "", "affected": {"8.3": "8.3", "8.4": "8.4", "9.0": "9.0", "9.1": "9.1"}, "component": "", "published": {}, "introduced": {}, "cvss_version": "", "description_en": "", "first_published": null, "fixed_version": ""}], "cve_available": true, "remaining_cves": [], "security_regressions": [], "warnings": [], "candidate_count": 47, "already_in_source_count": 0, "duplicate_count": 0, "excluded_count": 0, "exclusions": [], "source_as_of": "2026-09-26", "security_as_of": "2026-09-26"}