{"format": 1, "mode": "release", "from_release": null, "to_release": {"date": "2016-05-12", "build": "9.4.8", "major": "9.4", "minor": 8, "manual": "9.4", "status": "stable", "doc_git": "", "version": "9.4.8", "eol_date": "2020-02-13", "date_text": "2016-05-12", "supported": false, "manual_url": "/docs/9.4/release-9-4-8.html", "source_url": "/docs/release/9.4.8/", "entry_count": 21, "placeholder": false, "content_hash": "89ca873004f966338da6f66bd60a8372e9573a9c243d90dc5e4e332fc250607e", "manual_build": "9.4.26", "source_as_of": "", "changes_count": 21, "doc_loaded_at": "2026-09-26T02:56:45.438944", "migration_html": "<p>对于运行 9.4.X 的用户，不需要转储/恢复。</p>\n<p>但是，如果你是从早于 9.4.6 的版本升级，请参见<a href=\"/docs/9.4/release-9-4-6.html\" title=\"E.21. 版本 9.4.6\">第 E.21 节</a>。</p>", "compatibility_count": 0, "label": "9.4.8", "status_label": "历史版本", "eol": "2020-02-13", "age_days": 3793, "support_days": -2421}, "groups": [{"date": "2016-05-12", "build": "9.4.8", "major": "9.4", "minor": 8, "manual": "9.4", "status": "stable", "doc_git": "", "version": "9.4.8", "eol_date": "2020-02-13", "date_text": "2016-05-12", "supported": false, "manual_url": "/docs/9.4/release-9-4-8.html", "source_url": "/docs/release/9.4.8/", "entry_count": 21, "placeholder": false, "content_hash": "89ca873004f966338da6f66bd60a8372e9573a9c243d90dc5e4e332fc250607e", "manual_build": "9.4.26", "source_as_of": "", "changes_count": 21, "doc_loaded_at": "2026-09-26T02:56:45.438944", "migration_html": "<p>对于运行 9.4.X 的用户，不需要转储/恢复。</p>\n<p>但是，如果你是从早于 9.4.6 的版本升级，请参见<a href=\"/docs/9.4/release-9-4-6.html\" title=\"E.21. 版本 9.4.6\">第 E.21 节</a>。</p>", "compatibility_count": 0, "label": "9.4.8", "status_label": "历史版本", "eol": "2020-02-13", "age_days": 3793, "support_days": -2421, "entries": [{"id": "9.4.8-49ea0453a5768b7a", "cves": [], "html": "<p>在调用 OpenSSL 之前清空 OpenSSL 错误队列，而不是假设它已经为空；并确保调用之后也让它保持为空（Peter Geoghegan、Dave Vitek、Peter Eisentraut）</p>\n<p>此变更可防止在单个进程内存在多条使用 OpenSSL 的连接、且相关代码并非全部遵循相同的错误队列清空规则时出现问题。特别是当客户端应用并发使用 <span>libpq</span> 的 SSL 连接和 PHP、Python 或 Ruby 的 OpenSSL 封装库的 SSL 连接时，已有失败报告。如果扩展模块建立外向 SSL 连接，服务器内部也可能出现类似问题。</p>", "text": "在调用 OpenSSL 之前清空 OpenSSL 错误队列，而不是假设它已经为空；并确保调用之后也让它保持为空（Peter Geoghegan、Dave Vitek、Peter Eisentraut） 此变更可防止在单个进程内存在多条使用 OpenSSL 的连接、且相关代码并非全部遵循相同的错误队列清空规则时出现问题。特别是当客户端应用并发使用 libpq 的 SSL 连接和 PHP、Python 或 Ruby 的 OpenSSL 封装库的 SSL 连接时，已有失败报告。如果扩展模块建立外向 SSL 连接，服务器内部也可能出现类似问题。", "title": "在调用 OpenSSL 之前清空 OpenSSL 错误队列，而不是假设它已经为空；并确保调用之后也让它保持为空", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "9237a97d823d6221147e19eee9f36023227d8ab356015f8c7b7f9e2486df29e7", "section_path": ["变更"], "commit_groups": [], "identity_text": "Clear the OpenSSL error queue before OpenSSL calls, rather than assuming it's clear already; and make sure we leave it clear afterwards (Peter Geoghegan, Dave Vitek, Peter Eisentraut) This change prevents problems when there are multiple connections using OpenSSL within a single process and not all the code involved follows the same rules for when to clear the error queue. Failures have been reported specifically when a client application uses SSL connections in libpq concurrently with SSL connections using the PHP, Python, or Ruby wrappers for OpenSSL. It's possible for similar problems to arise within the server as well, if an extension module establishes an outgoing SSL connection.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/001", "db_id": "9fa608c377aee746ac2c611e33319396", "patch_ids": [], "statement_hash": "538b4824fa0c903d31fd2f283cfb7d4a7ea1d2d8a6417468be19e445ce4736dc", "relations": [{"rule": 2, "type": "equivalent", "target": "4b7db9362a26183bd17c5103480fbee1", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "538b4824fa0c903d31fd2f283cfb7d4a7ea1d2d8a6417468be19e445ce4736dc"}}, {"rule": 2, "type": "equivalent", "target": "62f20c0d05d29bf341e3aaee06275c55", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "538b4824fa0c903d31fd2f283cfb7d4a7ea1d2d8a6417468be19e445ce4736dc"}}, {"rule": 2, "type": "equivalent", "target": "91ac1006417b49305cc67423f60912db", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "538b4824fa0c903d31fd2f283cfb7d4a7ea1d2d8a6417468be19e445ce4736dc"}}, {"rule": 2, "type": "equivalent", "target": "e600a65fa6acd98ee339fbf365447dbc", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "538b4824fa0c903d31fd2f283cfb7d4a7ea1d2d8a6417468be19e445ce4736dc"}}], "version": "9.4.8", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "4b7db9362a26183bd17c5103480fbee1", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "在调用 OpenSSL 之前清空 OpenSSL 错误队列，而不是假设它已经为空；并确保调用之后也让它保持为空", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "538b4824fa0c903d31fd2f283cfb7d4a7ea1d2d8a6417468be19e445ce4736dc"}, "url": "/docs/compare/?release=9.5.3#9.5.3-49ea0453a5768b7a", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}, {"db_id": "e600a65fa6acd98ee339fbf365447dbc", "kind": "equivalent", "version": "9.3.13", "label": "9.3.13", "title": "在调用 OpenSSL 之前清空 OpenSSL 错误队列，而不是假设它已经为空；并确保调用之后也让它保持为空", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "538b4824fa0c903d31fd2f283cfb7d4a7ea1d2d8a6417468be19e445ce4736dc"}, "url": "/docs/compare/?release=9.3.13#9.3.13-49ea0453a5768b7a", "source_url": "/docs/release/9.3.13/#id-1.11.6.17.5"}, {"db_id": "62f20c0d05d29bf341e3aaee06275c55", "kind": "equivalent", "version": "9.2.17", "label": "9.2.17", "title": "在调用 OpenSSL 之前清空 OpenSSL 错误队列，而不是假设它已经为空；并确保调用之后也让它保持为空", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "538b4824fa0c903d31fd2f283cfb7d4a7ea1d2d8a6417468be19e445ce4736dc"}, "url": "/docs/compare/?release=9.2.17#9.2.17-49ea0453a5768b7a", "source_url": "/docs/release/9.2.17/#id-1.11.6.12.5"}, {"db_id": "91ac1006417b49305cc67423f60912db", "kind": "equivalent", "version": "9.1.22", "label": "9.1.22", "title": "在调用 OpenSSL 之前清空 OpenSSL 错误队列，而不是假设它已经为空；并确保调用之后也让它保持为空", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "538b4824fa0c903d31fd2f283cfb7d4a7ea1d2d8a6417468be19e445ce4736dc"}, "url": "/docs/compare/?release=9.1.22#9.1.22-49ea0453a5768b7a", "source_url": "/docs/release/9.1.22/#id-1.11.6.7.6"}]}, {"id": "9.4.8-3f0cbcae051220ae", "cves": [], "html": "<p>修复左连接右侧包含全连接时出现<span>“<span>failed to build any <em><code>N</code></em>-way joins</span>”</span>规划器错误的问题（Tom Lane）</p>", "text": "修复左连接右侧包含全连接时出现“failed to build any N-way joins”规划器错误的问题（Tom Lane）", "title": "修复左连接右侧包含全连接时出现“failed to build any N-way joins”规划器错误的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "17387065ecc97ba49aef3c9cd5e7cc860ceea6a0dc2a622e7979fae5f0a7320a", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix failed to build any N-way joins planner error with a full join enclosed in the right-hand side of a left join (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/002", "db_id": "a1381391d5e4f3d2ad49fca1e339a37b", "patch_ids": [], "statement_hash": "424d4851e66a3292648b8e73220e0a214e0fc736e0bb8d73dc8f0630bc99a704", "relations": [{"rule": 2, "type": "equivalent", "target": "5bd965c9aad8a1025186c6e34273b4a6", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "424d4851e66a3292648b8e73220e0a214e0fc736e0bb8d73dc8f0630bc99a704"}}, {"rule": 2, "type": "equivalent", "target": "a537cb7093824ef93e612e2110dd6e79", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "424d4851e66a3292648b8e73220e0a214e0fc736e0bb8d73dc8f0630bc99a704"}}, {"rule": 2, "type": "equivalent", "target": "dbb0f62fc7a76e48c3dc546d1181865b", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "424d4851e66a3292648b8e73220e0a214e0fc736e0bb8d73dc8f0630bc99a704"}}, {"rule": 2, "type": "equivalent", "target": "e4320446d7334c9e58ccf5dc74856b6f", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "424d4851e66a3292648b8e73220e0a214e0fc736e0bb8d73dc8f0630bc99a704"}}], "version": "9.4.8", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "5bd965c9aad8a1025186c6e34273b4a6", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "修复左连接右侧包含全连接时规划器出现“failed to build any N-way joins”错误的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "424d4851e66a3292648b8e73220e0a214e0fc736e0bb8d73dc8f0630bc99a704"}, "url": "/docs/compare/?release=9.5.3#9.5.3-c4937b44d8ec8762", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}, {"db_id": "a537cb7093824ef93e612e2110dd6e79", "kind": "equivalent", "version": "9.3.13", "label": "9.3.13", "title": "修复左连接右侧包含全连接时规划器出现“failed to build any N-way joins”错误的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "424d4851e66a3292648b8e73220e0a214e0fc736e0bb8d73dc8f0630bc99a704"}, "url": "/docs/compare/?release=9.3.13#9.3.13-c4937b44d8ec8762", "source_url": "/docs/release/9.3.13/#id-1.11.6.17.5"}, {"db_id": "e4320446d7334c9e58ccf5dc74856b6f", "kind": "equivalent", "version": "9.2.17", "label": "9.2.17", "title": "修复左连接右侧包含全连接时规划器出现“failed to build any N-way joins”错误的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "424d4851e66a3292648b8e73220e0a214e0fc736e0bb8d73dc8f0630bc99a704"}, "url": "/docs/compare/?release=9.2.17#9.2.17-c4937b44d8ec8762", "source_url": "/docs/release/9.2.17/#id-1.11.6.12.5"}, {"db_id": "dbb0f62fc7a76e48c3dc546d1181865b", "kind": "equivalent", "version": "9.1.22", "label": "9.1.22", "title": "修复左连接右侧包含全连接时规划器出现“failed to build any N-way joins”错误的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "424d4851e66a3292648b8e73220e0a214e0fc736e0bb8d73dc8f0630bc99a704"}, "url": "/docs/compare/?release=9.1.22#9.1.22-c4937b44d8ec8762", "source_url": "/docs/release/9.1.22/#id-1.11.6.7.6"}]}, {"id": "9.4.8-c28eb88979662b11", "cves": [], "html": "<p>修复多层级 nestloop 计划中等价类测试的处理不正确的问题（Tom Lane）</p>\n<p>对于三个或更多变量的等价类（例如 <code>X.X = Y.Y = Z.Z</code>），规划器可能遗漏一些确保所有变量确实相等的测试，导致输出不满足 <code>WHERE</code> 子句的连接行。由于种种原因，实践中很少选中错误的计划，因此这个 bug 长期未被发现。</p>", "text": "修复多层级 nestloop 计划中等价类测试的处理不正确的问题（Tom Lane） 对于三个或更多变量的等价类（例如 X.X = Y.Y = Z.Z），规划器可能遗漏一些确保所有变量确实相等的测试，导致输出不满足 WHERE 子句的连接行。由于种种原因，实践中很少选中错误的计划，因此这个 bug 长期未被发现。", "title": "修复多层级 nestloop 计划中等价类测试的处理不正确的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "19afd0025d014b69ba2c478f2f3e2c9e897111d72b08403521ad956b48174f39", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix incorrect handling of equivalence-class tests in multilevel nestloop plans (Tom Lane) Given a three-or-more-way equivalence class of variables, such as X.X = Y.Y = Z.Z, it was possible for the planner to omit some of the tests needed to enforce that all the variables are actually equal, leading to join rows being output that didn't satisfy the WHERE clauses. For various reasons, erroneous plans were seldom selected in practice, so that this bug has gone undetected for a long time.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/003", "db_id": "c6e0819be96584028fc9634442b895bc", "patch_ids": [], "statement_hash": "39d57538bd4ec5f2b5bebd700402685db3bb968bc9b8e4033f3000f27f91878b", "relations": [{"rule": 2, "type": "equivalent", "target": "1dce94c98aa5f0c56a05efee097c5813", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "39d57538bd4ec5f2b5bebd700402685db3bb968bc9b8e4033f3000f27f91878b"}}, {"rule": 2, "type": "equivalent", "target": "a591d7fb30a19ac1fb7fa4682eea85a0", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "39d57538bd4ec5f2b5bebd700402685db3bb968bc9b8e4033f3000f27f91878b"}}, {"rule": 2, "type": "equivalent", "target": "bf6d8e775756f9e92f946f44a25167e8", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "39d57538bd4ec5f2b5bebd700402685db3bb968bc9b8e4033f3000f27f91878b"}}], "version": "9.4.8", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "1dce94c98aa5f0c56a05efee097c5813", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "修复多层级 nestloop 计划中等价类测试的处理不正确的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "39d57538bd4ec5f2b5bebd700402685db3bb968bc9b8e4033f3000f27f91878b"}, "url": "/docs/compare/?release=9.5.3#9.5.3-c28eb88979662b11", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}, {"db_id": "bf6d8e775756f9e92f946f44a25167e8", "kind": "equivalent", "version": "9.3.13", "label": "9.3.13", "title": "修复多层级 nestloop 计划中等价类测试的处理不正确的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "39d57538bd4ec5f2b5bebd700402685db3bb968bc9b8e4033f3000f27f91878b"}, "url": "/docs/compare/?release=9.3.13#9.3.13-c28eb88979662b11", "source_url": "/docs/release/9.3.13/#id-1.11.6.17.5"}, {"db_id": "a591d7fb30a19ac1fb7fa4682eea85a0", "kind": "equivalent", "version": "9.2.17", "label": "9.2.17", "title": "修复多层级 nestloop 计划中等价类测试的处理不正确的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "39d57538bd4ec5f2b5bebd700402685db3bb968bc9b8e4033f3000f27f91878b"}, "url": "/docs/compare/?release=9.2.17#9.2.17-c28eb88979662b11", "source_url": "/docs/release/9.2.17/#id-1.11.6.12.5"}]}, {"id": "9.4.8-27b29ec66b3934f8", "cves": [], "html": "<p>修复 GIN 索引扫描中查询级内存泄漏（Julien Rouhaud）</p>", "text": "修复 GIN 索引扫描中查询级内存泄漏（Julien Rouhaud）", "title": "修复 GIN 索引扫描中查询级内存泄漏", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "68aaaa5156fa44025213ad362d11de2db678bf8c83b0926844efdb3f2b174098", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix query-lifespan memory leak in GIN index scans (Julien Rouhaud)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/004", "db_id": "9d9ff309018a71397aeea82eeb2a9d76", "patch_ids": [], "statement_hash": "c4e97ad7da72324edf1d787aaf98c08348f2c5b00467aa6e524745152a6be75a", "relations": [{"rule": 2, "type": "equivalent", "target": "0e1b8ed9f8c2ba0f613c644d06cfe3aa", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "c4e97ad7da72324edf1d787aaf98c08348f2c5b00467aa6e524745152a6be75a"}}], "version": "9.4.8", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "0e1b8ed9f8c2ba0f613c644d06cfe3aa", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "修复 GIN 索引扫描中的查询生命周期内存泄漏", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "c4e97ad7da72324edf1d787aaf98c08348f2c5b00467aa6e524745152a6be75a"}, "url": "/docs/compare/?release=9.5.3#9.5.3-b6fd64dda7023278", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}]}, {"id": "9.4.8-2939095c209f5a7d", "cves": [], "html": "<p>修复 GIN 索引插入中的查询生命周期内存泄漏和潜在的索引损坏风险（Tom Lane）</p>\n<p>在简单查询中，内存泄漏通常不会很大，但在以高 <code>maintenance_work_mem</code> 构建大型 GIN 索引期间，泄漏可能非常可观。</p>", "text": "修复 GIN 索引插入中的查询生命周期内存泄漏和潜在的索引损坏风险（Tom Lane） 在简单查询中，内存泄漏通常不会很大，但在以高 maintenance_work_mem 构建大型 GIN 索引期间，泄漏可能非常可观。", "title": "修复 GIN 索引插入中的查询生命周期内存泄漏和潜在的索引损坏风险", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "0109aea9236d68721015cb8bc2bf61a402f63edb5e88ba917d697ce83591182d", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix query-lifespan memory leak and potential index corruption hazard in GIN index insertion (Tom Lane) The memory leak would typically not amount to much in simple queries, but it could be very substantial during a large GIN index build with high maintenance_work_mem.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/005", "db_id": "0fe2edb739d220d809c0acb626b30e9f", "patch_ids": [], "statement_hash": "4765f57a8ee07c16adc8fcb129f5da0ad53788544d4ba8c791614605a8bde151", "relations": [{"rule": 2, "type": "equivalent", "target": "162fb90ddcc4e5934772aed1a3dcae49", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4765f57a8ee07c16adc8fcb129f5da0ad53788544d4ba8c791614605a8bde151"}}], "version": "9.4.8", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "162fb90ddcc4e5934772aed1a3dcae49", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "修复 GIN 索引插入中的查询生命周期内存泄漏和潜在的索引损坏风险", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4765f57a8ee07c16adc8fcb129f5da0ad53788544d4ba8c791614605a8bde151"}, "url": "/docs/compare/?release=9.5.3#9.5.3-2939095c209f5a7d", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}]}, {"id": "9.4.8-9c4fb0901af4626e", "cves": [], "html": "<p>修复 <code>to_timestamp()</code> 中 <code>TH</code>、<code>th</code> 和 <code>Y,YYY</code> 格式代码可能的错误行为（Tom Lane）</p>\n<p>这些代码可能越过输入字符串末尾，导致后续格式代码读取垃圾数据。</p>", "text": "修复 to_timestamp() 中 TH、th 和 Y,YYY 格式代码可能的错误行为（Tom Lane） 这些代码可能越过输入字符串末尾，导致后续格式代码读取垃圾数据。", "title": "修复 to_timestamp() 中 TH、th 和 Y,YYY 格式代码可能的错误行为", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "f3cec4f93dd255ccc1aa536d8961c9974ec1421185627648064faa833aa1be2e", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix possible misbehavior of TH, th, and Y,YYY format codes in to_timestamp() (Tom Lane) These could advance off the end of the input string, causing subsequent format codes to read garbage.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/006", "db_id": "f07bcffec9ce123ed674a9e6d146e64d", "patch_ids": [], "statement_hash": "60f0142c5486b145bd4a996a2a5bb2dc222192497df359187868e92109d72f81", "relations": [{"rule": 2, "type": "equivalent", "target": "366779bac19088d552991e951754241f", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "60f0142c5486b145bd4a996a2a5bb2dc222192497df359187868e92109d72f81"}}, {"rule": 2, "type": "equivalent", "target": "42f903f018fa1beaa8ee03a199b65c53", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "60f0142c5486b145bd4a996a2a5bb2dc222192497df359187868e92109d72f81"}}, {"rule": 2, "type": "equivalent", "target": "7164f936ae309710c73da3cb2981db31", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "60f0142c5486b145bd4a996a2a5bb2dc222192497df359187868e92109d72f81"}}, {"rule": 2, "type": "equivalent", "target": "9f6cefd6666bebbaa2d32d82c79a6a7e", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "60f0142c5486b145bd4a996a2a5bb2dc222192497df359187868e92109d72f81"}}], "version": "9.4.8", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "9f6cefd6666bebbaa2d32d82c79a6a7e", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "修复 to_timestamp() 中 TH、th 和 Y,YYY 格式代码可能的错误行为", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "60f0142c5486b145bd4a996a2a5bb2dc222192497df359187868e92109d72f81"}, "url": "/docs/compare/?release=9.5.3#9.5.3-9c4fb0901af4626e", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}, {"db_id": "42f903f018fa1beaa8ee03a199b65c53", "kind": "equivalent", "version": "9.3.13", "label": "9.3.13", "title": "修复 to_timestamp() 中 TH、th 和 Y,YYY 格式代码可能的错误行为", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "60f0142c5486b145bd4a996a2a5bb2dc222192497df359187868e92109d72f81"}, "url": "/docs/compare/?release=9.3.13#9.3.13-9c4fb0901af4626e", "source_url": "/docs/release/9.3.13/#id-1.11.6.17.5"}, {"db_id": "366779bac19088d552991e951754241f", "kind": "equivalent", "version": "9.2.17", "label": "9.2.17", "title": "修复 to_timestamp() 中 TH、th 和 Y,YYY 格式代码可能的错误行为", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "60f0142c5486b145bd4a996a2a5bb2dc222192497df359187868e92109d72f81"}, "url": "/docs/compare/?release=9.2.17#9.2.17-9c4fb0901af4626e", "source_url": "/docs/release/9.2.17/#id-1.11.6.12.5"}, {"db_id": "7164f936ae309710c73da3cb2981db31", "kind": "equivalent", "version": "9.1.22", "label": "9.1.22", "title": "修复 to_timestamp() 中 TH、th 和 Y,YYY 格式代码可能的错误行为", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "60f0142c5486b145bd4a996a2a5bb2dc222192497df359187868e92109d72f81"}, "url": "/docs/compare/?release=9.1.22#9.1.22-9c4fb0901af4626e", "source_url": "/docs/release/9.1.22/#id-1.11.6.7.6"}]}, {"id": "9.4.8-47ebf27e4bc499cd", "cves": [], "html": "<p>修复<code><em><code>value</code></em> <em><code>operator</code></em> ANY (<em><code>array</code></em>)</code>结构的<em><code>array</code></em>参数为子 SELECT 时规则和视图的转储（Tom Lane）</p>", "text": "修复value operator ANY (array)结构的array参数为子 SELECT 时规则和视图的转储（Tom Lane）", "title": "修复value operator ANY (array)结构的array参数为子 SELECT 时规则和视图的转储", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "fd4b1524450c1ee0b24fcdda834b60985e8a3c2b1ea43075670ff5a8b39e7bf3", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix dumping of rules and views in which the array argument of a value operator ANY (array) construct is a sub-SELECT (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/007", "db_id": "486ec00869568cfeb91f9781dd8d8973", "patch_ids": [], "statement_hash": "3c96c02a651a1cbcc7a614c7171c9ba39a99b092e1b90e1e65598689c1a50756", "relations": [{"rule": 2, "type": "equivalent", "target": "2863c53ebf45db469ef041d1f6d99c17", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3c96c02a651a1cbcc7a614c7171c9ba39a99b092e1b90e1e65598689c1a50756"}}, {"rule": 2, "type": "equivalent", "target": "36ff8c45b3e88c8731029c9d47e99c0a", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3c96c02a651a1cbcc7a614c7171c9ba39a99b092e1b90e1e65598689c1a50756"}}, {"rule": 2, "type": "equivalent", "target": "54052bff4c90837071042d50a7fe7cc2", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3c96c02a651a1cbcc7a614c7171c9ba39a99b092e1b90e1e65598689c1a50756"}}, {"rule": 2, "type": "equivalent", "target": "b1cc85e77e70b614188e52ae51af907c", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3c96c02a651a1cbcc7a614c7171c9ba39a99b092e1b90e1e65598689c1a50756"}}], "version": "9.4.8", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "36ff8c45b3e88c8731029c9d47e99c0a", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "修复对这样的规则和视图的转储：value operator ANY (array) 结构的 array 参数是子 SELECT", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3c96c02a651a1cbcc7a614c7171c9ba39a99b092e1b90e1e65598689c1a50756"}, "url": "/docs/compare/?release=9.5.3#9.5.3-eb65414c12f67eb7", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}, {"db_id": "2863c53ebf45db469ef041d1f6d99c17", "kind": "equivalent", "version": "9.3.13", "label": "9.3.13", "title": "修复对这样的规则和视图的转储：value operator ANY (array) 结构的 array 参数是子 SELECT", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3c96c02a651a1cbcc7a614c7171c9ba39a99b092e1b90e1e65598689c1a50756"}, "url": "/docs/compare/?release=9.3.13#9.3.13-eb65414c12f67eb7", "source_url": "/docs/release/9.3.13/#id-1.11.6.17.5"}, {"db_id": "54052bff4c90837071042d50a7fe7cc2", "kind": "equivalent", "version": "9.2.17", "label": "9.2.17", "title": "修复对这样的规则和视图的转储：value operator ANY (array) 结构的 array 参数是子 SELECT", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3c96c02a651a1cbcc7a614c7171c9ba39a99b092e1b90e1e65598689c1a50756"}, "url": "/docs/compare/?release=9.2.17#9.2.17-eb65414c12f67eb7", "source_url": "/docs/release/9.2.17/#id-1.11.6.12.5"}, {"db_id": "b1cc85e77e70b614188e52ae51af907c", "kind": "equivalent", "version": "9.1.22", "label": "9.1.22", "title": "修复对这样的规则和视图的转储：value operator ANY (array) 结构的 array 参数是子 SELECT", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "3c96c02a651a1cbcc7a614c7171c9ba39a99b092e1b90e1e65598689c1a50756"}, "url": "/docs/compare/?release=9.1.22#9.1.22-eb65414c12f67eb7", "source_url": "/docs/release/9.1.22/#id-1.11.6.7.6"}]}, {"id": "9.4.8-444073bb4e86a5d7", "cves": [], "html": "<p>禁止 <code>ALTER SYSTEM</code> 参数值中出现换行（Tom Lane）</p>\n<p>配置文件解析器不支持字符串字面量中的内嵌换行，因此我们不能允许 <code>ALTER SYSTEM</code> 插入的值中包含换行。</p>", "text": "禁止 ALTER SYSTEM 参数值中出现换行（Tom Lane） 配置文件解析器不支持字符串字面量中的内嵌换行，因此我们不能允许 ALTER SYSTEM 插入的值中包含换行。", "title": "禁止 ALTER SYSTEM 参数值中出现换行", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "387ee16e9f65f480b6479a2491dc655f32027486d6ef59b89390cd13763056aa", "section_path": ["变更"], "commit_groups": [], "identity_text": "Disallow newlines in ALTER SYSTEM parameter values (Tom Lane) The configuration-file parser doesn't support embedded newlines in string literals, so we mustn't allow them in values to be inserted by ALTER SYSTEM.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/008", "db_id": "f9db60498baca8b21e805835b724a82b", "patch_ids": [], "statement_hash": "5e4a2cc5bda512efb68ff0ffac4023126934138f65f9aa8a141520e67baafa13", "relations": [{"rule": 2, "type": "equivalent", "target": "b58a36c5f7ec30ae6199b0888eef3ecf", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5e4a2cc5bda512efb68ff0ffac4023126934138f65f9aa8a141520e67baafa13"}}], "version": "9.4.8", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "b58a36c5f7ec30ae6199b0888eef3ecf", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "禁止 ALTER SYSTEM 参数值中出现换行", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5e4a2cc5bda512efb68ff0ffac4023126934138f65f9aa8a141520e67baafa13"}, "url": "/docs/compare/?release=9.5.3#9.5.3-444073bb4e86a5d7", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}]}, {"id": "9.4.8-a29cadee54151eeb", "cves": [], "html": "<p>修复<code>ALTER TABLE ... REPLICA IDENTITY USING INDEX</code>在选中的是 OID 上的索引时正确工作的问题（David Rowley）</p>", "text": "修复ALTER TABLE ... REPLICA IDENTITY USING INDEX在选中的是 OID 上的索引时正确工作的问题（David Rowley）", "title": "修复ALTER TABLE ... REPLICA IDENTITY USING INDEX在选中的是 OID 上的索引时正确工作的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "f695329466fdafd0955fa474b5add6363ec1b5569ed160203222c0b1af74ebe5", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix ALTER TABLE ... REPLICA IDENTITY USING INDEX to work properly if an index on OID is selected (David Rowley)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/009", "db_id": "abcb18fc2f72b5d770a8064b4edd3f1c", "patch_ids": [], "statement_hash": "93009d3f1a39ca026db3885ff26d5dece693df4d7b67b0318ed796d051eda082", "relations": [{"rule": 2, "type": "equivalent", "target": "f00d1503c5f279dd53b4390e0004fc72", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "93009d3f1a39ca026db3885ff26d5dece693df4d7b67b0318ed796d051eda082"}}], "version": "9.4.8", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "f00d1503c5f279dd53b4390e0004fc72", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "修复选择 OID 上的索引时 ALTER TABLE ... REPLICA IDENTITY USING INDEX 无法正确工作的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "93009d3f1a39ca026db3885ff26d5dece693df4d7b67b0318ed796d051eda082"}, "url": "/docs/compare/?release=9.5.3#9.5.3-116e6d9d6462e945", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}]}, {"id": "9.4.8-b72fd877b3ea0731", "cves": [], "html": "<p>修复对齐敏感平台上逻辑解码崩溃的问题（Tom Lane、Andres Freund）</p>\n<p>该失败仅发生在事务大到需要溢出到磁盘、且该事务内发生主键更改的情况。</p>", "text": "修复对齐敏感平台上逻辑解码崩溃的问题（Tom Lane、Andres Freund） 该失败仅发生在事务大到需要溢出到磁盘、且该事务内发生主键更改的情况。", "title": "修复对齐敏感平台上逻辑解码崩溃的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "40d93107e3c7a9f2f5121b01340fd297a3d4685872293aac76751e8fbaf20d64", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix crash in logical decoding on alignment-picky platforms (Tom Lane, Andres Freund) The failure occurred only with a transaction large enough to spill to disk and a primary-key change within that transaction.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/010", "db_id": "d7480a85ff3df6566f501c75f25d1759", "patch_ids": [], "statement_hash": "cc110ed1e0bff821e524437553f5545ec7f5a33abd56e055b24e210b279c4401", "relations": [{"rule": 2, "type": "equivalent", "target": "143e24c6a948f28d86b45ca266049ca4", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "cc110ed1e0bff821e524437553f5545ec7f5a33abd56e055b24e210b279c4401"}}], "version": "9.4.8", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "143e24c6a948f28d86b45ca266049ca4", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "修复对齐敏感平台上逻辑解码崩溃的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "cc110ed1e0bff821e524437553f5545ec7f5a33abd56e055b24e210b279c4401"}, "url": "/docs/compare/?release=9.5.3#9.5.3-b72fd877b3ea0731", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}]}, {"id": "9.4.8-7d74e879c70b0c6b", "cves": [], "html": "<p>避免 walsender 关闭期间反复请求接收端反馈（Nick Cleaton）</p>", "text": "避免 walsender 关闭期间反复请求接收端反馈（Nick Cleaton）", "title": "避免 walsender 关闭期间反复请求接收端反馈", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "3a0d1d02946d546fef5872ce04bbaed430dcfcf34ead853d2c4412edab92bd84", "section_path": ["变更"], "commit_groups": [], "identity_text": "Avoid repeated requests for feedback from receiver while shutting down walsender (Nick Cleaton)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/011", "db_id": "5fdb492a6b26b828135cc46730a49b2c", "patch_ids": [], "statement_hash": "dedf01a241bcd8d9447203614f93d53624ccc086a40623f1e2e8c97b6dd5b119", "relations": [{"rule": 2, "type": "equivalent", "target": "7a4d202ec356da4dab2f15d9eddcaf97", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "dedf01a241bcd8d9447203614f93d53624ccc086a40623f1e2e8c97b6dd5b119"}}], "version": "9.4.8", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "7a4d202ec356da4dab2f15d9eddcaf97", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "避免 walsender 关闭期间反复向接收器请求反馈", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "dedf01a241bcd8d9447203614f93d53624ccc086a40623f1e2e8c97b6dd5b119"}, "url": "/docs/compare/?release=9.5.3#9.5.3-529b051a1831b0a1", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}]}, {"id": "9.4.8-baad701ca12dd111", "cves": [], "html": "<p>使 <span>pg_regress</span> 在设置了 <code>PGCTLTIMEOUT</code> 环境变量时使用其中的启动超时（Tom Lane）</p>\n<p>这是为了与最近添加到 <span>pg_ctl</span> 的行为保持一致；它方便了在慢速机器上进行自动化测试。</p>", "text": "使 pg_regress 在设置了 PGCTLTIMEOUT 环境变量时使用其中的启动超时（Tom Lane） 这是为了与最近添加到 pg_ctl 的行为保持一致；它方便了在慢速机器上进行自动化测试。", "title": "使 pg_regress 在设置了 PGCTLTIMEOUT 环境变量时使用其中的启动超时", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "3a87570f806f3937c9571aa5f9bb22a678709761a8410a338609edc6ae50fc8c", "section_path": ["变更"], "commit_groups": [], "identity_text": "Make pg_regress use a startup timeout from the PGCTLTIMEOUT environment variable, if that's set (Tom Lane) This is for consistency with a behavior recently added to pg_ctl; it eases automated testing on slow machines.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/012", "db_id": "d81adfb5b072cb2ca0685aee8eae6ca2", "patch_ids": [], "statement_hash": "a2b191b0403d00f404dfc01085db53ae78407265223bbbd3520616f7d9dd679e", "relations": [{"rule": 2, "type": "equivalent", "target": "2ce275053c28723ba1f1be8f29c5f7dd", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a2b191b0403d00f404dfc01085db53ae78407265223bbbd3520616f7d9dd679e"}}, {"rule": 2, "type": "equivalent", "target": "8bc8cda2e133d09a52e7c1055bf2041b", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a2b191b0403d00f404dfc01085db53ae78407265223bbbd3520616f7d9dd679e"}}, {"rule": 2, "type": "equivalent", "target": "8e6b40fe0e5a908a3e5fa86b1e5245d7", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a2b191b0403d00f404dfc01085db53ae78407265223bbbd3520616f7d9dd679e"}}, {"rule": 2, "type": "equivalent", "target": "c415a1e7cea295cdb2c5d5bfc63e8dec", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a2b191b0403d00f404dfc01085db53ae78407265223bbbd3520616f7d9dd679e"}}], "version": "9.4.8", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "8bc8cda2e133d09a52e7c1055bf2041b", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "使 pg_regress 在设置了 PGCTLTIMEOUT 环境变量时使用其中的启动超时", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a2b191b0403d00f404dfc01085db53ae78407265223bbbd3520616f7d9dd679e"}, "url": "/docs/compare/?release=9.5.3#9.5.3-baad701ca12dd111", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}, {"db_id": "8e6b40fe0e5a908a3e5fa86b1e5245d7", "kind": "equivalent", "version": "9.3.13", "label": "9.3.13", "title": "使 pg_regress 在设置了 PGCTLTIMEOUT 环境变量时使用其中的启动超时", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a2b191b0403d00f404dfc01085db53ae78407265223bbbd3520616f7d9dd679e"}, "url": "/docs/compare/?release=9.3.13#9.3.13-baad701ca12dd111", "source_url": "/docs/release/9.3.13/#id-1.11.6.17.5"}, {"db_id": "2ce275053c28723ba1f1be8f29c5f7dd", "kind": "equivalent", "version": "9.2.17", "label": "9.2.17", "title": "使 pg_regress 在设置了 PGCTLTIMEOUT 环境变量时使用其中的启动超时", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a2b191b0403d00f404dfc01085db53ae78407265223bbbd3520616f7d9dd679e"}, "url": "/docs/compare/?release=9.2.17#9.2.17-baad701ca12dd111", "source_url": "/docs/release/9.2.17/#id-1.11.6.12.5"}, {"db_id": "c415a1e7cea295cdb2c5d5bfc63e8dec", "kind": "equivalent", "version": "9.1.22", "label": "9.1.22", "title": "使 pg_regress 在设置了 PGCTLTIMEOUT 环境变量时使用其中的启动超时", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "a2b191b0403d00f404dfc01085db53ae78407265223bbbd3520616f7d9dd679e"}, "url": "/docs/compare/?release=9.1.22#9.1.22-baad701ca12dd111", "source_url": "/docs/release/9.1.22/#id-1.11.6.7.6"}]}, {"id": "9.4.8-ed0cf090821efeae", "cves": [], "html": "<p>修复 <span>pg_upgrade</span> 对仅包含一个操作符类的操作符族正确恢复扩展成员关系的问题（Tom Lane）</p>\n<p>在这种情况下，操作符族会被恢复到新数据库中，但不再被标记为扩展的一部分。这没有直接的坏影响，但会导致后续 <span>pg_dump</span> 运行产生在恢复时引发（无害）错误的输出。</p>", "text": "修复 pg_upgrade 对仅包含一个操作符类的操作符族正确恢复扩展成员关系的问题（Tom Lane） 在这种情况下，操作符族会被恢复到新数据库中，但不再被标记为扩展的一部分。这没有直接的坏影响，但会导致后续 pg_dump 运行产生在恢复时引发（无害）错误的输出。", "title": "修复 pg_upgrade 对仅包含一个操作符类的操作符族正确恢复扩展成员关系的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "a6d34b69677d2f20d653538190f1ae2503eba3dc077f99e4379219faae8344db", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix pg_upgrade to correctly restore extension membership for operator families containing only one operator class (Tom Lane) In such a case, the operator family was restored into the new database, but it was no longer marked as part of the extension. This had no immediate ill effects, but would cause later pg_dump runs to emit output that would cause (harmless) errors on restore.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/013", "db_id": "7c7076996d977e64c38b5a365b48b4c2", "patch_ids": [], "statement_hash": "42a67df0b603e189af9ec165ccc13e98aae95587ce816f12af83e76546828953", "relations": [{"rule": 2, "type": "equivalent", "target": "47d0f0c5b40b9c550b968d5651c6f301", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "42a67df0b603e189af9ec165ccc13e98aae95587ce816f12af83e76546828953"}}, {"rule": 2, "type": "equivalent", "target": "4c64b8a24772abea3a1b65548126c81d", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "42a67df0b603e189af9ec165ccc13e98aae95587ce816f12af83e76546828953"}}, {"rule": 2, "type": "equivalent", "target": "9705472832c0c7cbceea1131065a8aab", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "42a67df0b603e189af9ec165ccc13e98aae95587ce816f12af83e76546828953"}}, {"rule": 2, "type": "equivalent", "target": "f91fdd52872619c7dcfff3b1b5a0f7a5", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "42a67df0b603e189af9ec165ccc13e98aae95587ce816f12af83e76546828953"}}], "version": "9.4.8", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "47d0f0c5b40b9c550b968d5651c6f301", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "修复 pg_upgrade 对仅包含一个操作符类的操作符族正确恢复扩展成员关系的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "42a67df0b603e189af9ec165ccc13e98aae95587ce816f12af83e76546828953"}, "url": "/docs/compare/?release=9.5.3#9.5.3-ed0cf090821efeae", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}, {"db_id": "f91fdd52872619c7dcfff3b1b5a0f7a5", "kind": "equivalent", "version": "9.3.13", "label": "9.3.13", "title": "修复 pg_upgrade 对仅包含一个操作符类的操作符族正确恢复扩展成员关系的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "42a67df0b603e189af9ec165ccc13e98aae95587ce816f12af83e76546828953"}, "url": "/docs/compare/?release=9.3.13#9.3.13-ed0cf090821efeae", "source_url": "/docs/release/9.3.13/#id-1.11.6.17.5"}, {"db_id": "9705472832c0c7cbceea1131065a8aab", "kind": "equivalent", "version": "9.2.17", "label": "9.2.17", "title": "修复 pg_upgrade 对仅包含一个操作符类的操作符族正确恢复扩展成员关系的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "42a67df0b603e189af9ec165ccc13e98aae95587ce816f12af83e76546828953"}, "url": "/docs/compare/?release=9.2.17#9.2.17-ed0cf090821efeae", "source_url": "/docs/release/9.2.17/#id-1.11.6.12.5"}, {"db_id": "4c64b8a24772abea3a1b65548126c81d", "kind": "equivalent", "version": "9.1.22", "label": "9.1.22", "title": "修复 pg_upgrade 对仅包含一个操作符类的操作符族正确恢复扩展成员关系的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "42a67df0b603e189af9ec165ccc13e98aae95587ce816f12af83e76546828953"}, "url": "/docs/compare/?release=9.1.22#9.1.22-ed0cf090821efeae", "source_url": "/docs/release/9.1.22/#id-1.11.6.7.6"}]}, {"id": "9.4.8-58371ddf37bdc27b", "cves": [], "html": "<p>修复新集群 TOAST 规则与旧集群不同时 <span>pg_upgrade</span> 失败的问题（Tom Lane）</p>\n<p><span>pg_upgrade</span> 原有专门代码处理新 <span>PostgreSQL</span> 版本认为表应有 TOAST 表而旧版本认为没有的情况。该代码有问题，因此将其移除，在这种情况下改为不做任何处理；没有理由认为，如果按照旧版本的规则没有 TOAST 表也没问题，我们就无法在没有 TOAST 表的情况下正常运作。</p>", "text": "修复新集群 TOAST 规则与旧集群不同时 pg_upgrade 失败的问题（Tom Lane） pg_upgrade 原有专门代码处理新 PostgreSQL 版本认为表应有 TOAST 表而旧版本认为没有的情况。该代码有问题，因此将其移除，在这种情况下改为不做任何处理；没有理由认为，如果按照旧版本的规则没有 TOAST 表也没问题，我们就无法在没有 TOAST 表的情况下正常运作。", "title": "修复新集群 TOAST 规则与旧集群不同时 pg_upgrade 失败的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "9935ea81f86a15841bea7ecb0f43dc2df824facf613f9602bc5c339fed28ee17", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix pg_upgrade to not fail when new-cluster TOAST rules differ from old (Tom Lane) pg_upgrade had special-case code to handle the situation where the new PostgreSQL version thinks that a table should have a TOAST table while the old version did not. That code was broken, so remove it, and instead do nothing in such cases; there seems no reason to believe that we can't get along fine without a TOAST table if that was okay according to the old version's rules.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/014", "db_id": "69f9907110f0644a6d5fa587425caab4", "patch_ids": [], "statement_hash": "7fc59bb6abd6d37c11b51205d833b77343f4ade8ff9e6132eec6b7b6ed4c6dcb", "relations": [{"rule": 2, "type": "equivalent", "target": "b2343770feb785daf30350eaf76cff53", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7fc59bb6abd6d37c11b51205d833b77343f4ade8ff9e6132eec6b7b6ed4c6dcb"}}, {"rule": 2, "type": "equivalent", "target": "c3ba938c40ed00b02a10d9bd12fa9f26", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7fc59bb6abd6d37c11b51205d833b77343f4ade8ff9e6132eec6b7b6ed4c6dcb"}}], "version": "9.4.8", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "b2343770feb785daf30350eaf76cff53", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "修复新集群 TOAST 规则与旧集群不同时 pg_upgrade 失败的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7fc59bb6abd6d37c11b51205d833b77343f4ade8ff9e6132eec6b7b6ed4c6dcb"}, "url": "/docs/compare/?release=9.5.3#9.5.3-58371ddf37bdc27b", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}, {"db_id": "c3ba938c40ed00b02a10d9bd12fa9f26", "kind": "equivalent", "version": "9.3.13", "label": "9.3.13", "title": "修复新集群 TOAST 规则与旧集群不同时 pg_upgrade 失败的问题", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "7fc59bb6abd6d37c11b51205d833b77343f4ade8ff9e6132eec6b7b6ed4c6dcb"}, "url": "/docs/compare/?release=9.3.13#9.3.13-58371ddf37bdc27b", "source_url": "/docs/release/9.3.13/#id-1.11.6.17.5"}]}, {"id": "9.4.8-a83fb75c19d36f28", "cves": [], "html": "<p>减少以<code>--disable-spinlocks</code>配置的构建所使用的 SysV 信号量数量（Tom Lane）</p>", "text": "减少以--disable-spinlocks配置的构建所使用的 SysV 信号量数量（Tom Lane）", "title": "减少以--disable-spinlocks配置的构建所使用的 SysV 信号量数量", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "636c229deaac457348a35786326c32c882953f65dd85192a81e6bf0f10460316", "section_path": ["变更"], "commit_groups": [], "identity_text": "Reduce the number of SysV semaphores used by a build configured with --disable-spinlocks (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/015", "db_id": "ccffb7da59097f758f46a81e9d9d38ae", "patch_ids": [], "statement_hash": "c297ebcf7355bed20055ec3672232bb915d3b51254fa450207fcf561652ff5af", "relations": [{"rule": 2, "type": "equivalent", "target": "33c5c7b70971a0d393e0aea021e0a3f7", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "c297ebcf7355bed20055ec3672232bb915d3b51254fa450207fcf561652ff5af"}}, {"rule": 2, "type": "equivalent", "target": "cb24c362a321d2bebb433956de788e20", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "c297ebcf7355bed20055ec3672232bb915d3b51254fa450207fcf561652ff5af"}}, {"rule": 2, "type": "equivalent", "target": "d21a98772764cb94acd1734c61fa88fe", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "c297ebcf7355bed20055ec3672232bb915d3b51254fa450207fcf561652ff5af"}}], "version": "9.4.8", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "d21a98772764cb94acd1734c61fa88fe", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "减少配置了 --disable-spinlocks 的构建所使用的 SysV 信号量数量", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "c297ebcf7355bed20055ec3672232bb915d3b51254fa450207fcf561652ff5af"}, "url": "/docs/compare/?release=9.5.3#9.5.3-4b9de6bff121d19f", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}, {"db_id": "cb24c362a321d2bebb433956de788e20", "kind": "equivalent", "version": "9.3.13", "label": "9.3.13", "title": "减少配置了 --disable-spinlocks 的构建所使用的 SysV 信号量数量", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "c297ebcf7355bed20055ec3672232bb915d3b51254fa450207fcf561652ff5af"}, "url": "/docs/compare/?release=9.3.13#9.3.13-4b9de6bff121d19f", "source_url": "/docs/release/9.3.13/#id-1.11.6.17.5"}, {"db_id": "33c5c7b70971a0d393e0aea021e0a3f7", "kind": "equivalent", "version": "9.2.17", "label": "9.2.17", "title": "减少配置了 --disable-spinlocks 的构建所使用的 SysV 信号量数量", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "c297ebcf7355bed20055ec3672232bb915d3b51254fa450207fcf561652ff5af"}, "url": "/docs/compare/?release=9.2.17#9.2.17-4b9de6bff121d19f", "source_url": "/docs/release/9.2.17/#id-1.11.6.12.5"}]}, {"id": "9.4.8-4f81d66e74fea724", "cves": [], "html": "<p>将内部函数<code>strtoi()</code>重命名为<code>strtoint()</code>，以避免与 NetBSD 库函数冲突（Thomas Munro）</p>", "text": "将内部函数strtoi()重命名为strtoint()，以避免与 NetBSD 库函数冲突（Thomas Munro）", "title": "将内部函数strtoi()重命名为strtoint()，以避免与 NetBSD 库函数冲突", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "92c08fcd0cfcc866cc9b5ad870a74973851d75150d0904d3c5e1de7180f39cf6", "section_path": ["变更"], "commit_groups": [], "identity_text": "Rename internal function strtoi() to strtoint() to avoid conflict with a NetBSD library function (Thomas Munro)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/016", "db_id": "35f0f4507cf02f3a765a76888b94e3a4", "patch_ids": [], "statement_hash": "daf37b8873ec7d489cc0b91d3259e1cf9092f1f7b73e0b3c07150b1b41082b66", "relations": [{"rule": 2, "type": "equivalent", "target": "07795696d6a7ab8af1ad49d41cecb393", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "daf37b8873ec7d489cc0b91d3259e1cf9092f1f7b73e0b3c07150b1b41082b66"}}, {"rule": 2, "type": "equivalent", "target": "265b4d732f27dacc36314edf518923c7", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "daf37b8873ec7d489cc0b91d3259e1cf9092f1f7b73e0b3c07150b1b41082b66"}}, {"rule": 2, "type": "equivalent", "target": "6787c135c33be1a810d12eed7af6ec76", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "daf37b8873ec7d489cc0b91d3259e1cf9092f1f7b73e0b3c07150b1b41082b66"}}, {"rule": 2, "type": "equivalent", "target": "f18b040e106e1164a59e5356999c0025", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "daf37b8873ec7d489cc0b91d3259e1cf9092f1f7b73e0b3c07150b1b41082b66"}}], "version": "9.4.8", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "6787c135c33be1a810d12eed7af6ec76", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "把内部函数 strtoi() 重命名为 strtoint()，以避免与 NetBSD 库函数冲突", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "daf37b8873ec7d489cc0b91d3259e1cf9092f1f7b73e0b3c07150b1b41082b66"}, "url": "/docs/compare/?release=9.5.3#9.5.3-4c575f265273afda", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}, {"db_id": "f18b040e106e1164a59e5356999c0025", "kind": "equivalent", "version": "9.3.13", "label": "9.3.13", "title": "把内部函数 strtoi() 重命名为 strtoint()，以避免与 NetBSD 库函数冲突", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "daf37b8873ec7d489cc0b91d3259e1cf9092f1f7b73e0b3c07150b1b41082b66"}, "url": "/docs/compare/?release=9.3.13#9.3.13-4c575f265273afda", "source_url": "/docs/release/9.3.13/#id-1.11.6.17.5"}, {"db_id": "265b4d732f27dacc36314edf518923c7", "kind": "equivalent", "version": "9.2.17", "label": "9.2.17", "title": "把内部函数 strtoi() 重命名为 strtoint()，以避免与 NetBSD 库函数冲突", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "daf37b8873ec7d489cc0b91d3259e1cf9092f1f7b73e0b3c07150b1b41082b66"}, "url": "/docs/compare/?release=9.2.17#9.2.17-4c575f265273afda", "source_url": "/docs/release/9.2.17/#id-1.11.6.12.5"}, {"db_id": "07795696d6a7ab8af1ad49d41cecb393", "kind": "equivalent", "version": "9.1.22", "label": "9.1.22", "title": "把内部函数 strtoi() 重命名为 strtoint()，以避免与 NetBSD 库函数冲突", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "daf37b8873ec7d489cc0b91d3259e1cf9092f1f7b73e0b3c07150b1b41082b66"}, "url": "/docs/compare/?release=9.1.22#9.1.22-4c575f265273afda", "source_url": "/docs/release/9.1.22/#id-1.11.6.7.6"}]}, {"id": "9.4.8-88ff8c221a0d260f", "cves": [], "html": "<p>修复 Windows 上<code>bind()</code>和<code>listen()</code>系统调用错误的报告（Tom Lane）</p>", "text": "修复 Windows 上bind()和listen()系统调用错误的报告（Tom Lane）", "title": "修复 Windows 上bind()和listen()系统调用错误的报告", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "4d0010776317ea20db12b153a84a498a532485649d4f2e9801b0ae72b2bfa109", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix reporting of errors from bind() and listen() system calls on Windows (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/017", "db_id": "c0b7aec873e8f99f8e07b587338bcc9e", "patch_ids": [], "statement_hash": "bf2f2fe0361a5a5b6b13d12099850bfa36ba78eaeed89fdd45b6cb4bb6ab6a8e", "relations": [{"rule": 2, "type": "equivalent", "target": "116ddf534cc4298b2ce9e58d67cb2fe8", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bf2f2fe0361a5a5b6b13d12099850bfa36ba78eaeed89fdd45b6cb4bb6ab6a8e"}}, {"rule": 2, "type": "equivalent", "target": "6bc0398b17ec9e3ad2d18735b7b5d72e", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bf2f2fe0361a5a5b6b13d12099850bfa36ba78eaeed89fdd45b6cb4bb6ab6a8e"}}, {"rule": 2, "type": "equivalent", "target": "855ced2f2e5cab1357a39946a69e1fbb", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bf2f2fe0361a5a5b6b13d12099850bfa36ba78eaeed89fdd45b6cb4bb6ab6a8e"}}, {"rule": 2, "type": "equivalent", "target": "8cd431978c2501c0e48cb95d54e3b96c", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bf2f2fe0361a5a5b6b13d12099850bfa36ba78eaeed89fdd45b6cb4bb6ab6a8e"}}], "version": "9.4.8", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "6bc0398b17ec9e3ad2d18735b7b5d72e", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "修复 Windows 上 bind() 和 listen() 系统调用错误的报告", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bf2f2fe0361a5a5b6b13d12099850bfa36ba78eaeed89fdd45b6cb4bb6ab6a8e"}, "url": "/docs/compare/?release=9.5.3#9.5.3-cd087175f2b48cbf", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}, {"db_id": "855ced2f2e5cab1357a39946a69e1fbb", "kind": "equivalent", "version": "9.3.13", "label": "9.3.13", "title": "修复 Windows 上 bind() 和 listen() 系统调用错误的报告", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bf2f2fe0361a5a5b6b13d12099850bfa36ba78eaeed89fdd45b6cb4bb6ab6a8e"}, "url": "/docs/compare/?release=9.3.13#9.3.13-cd087175f2b48cbf", "source_url": "/docs/release/9.3.13/#id-1.11.6.17.5"}, {"db_id": "8cd431978c2501c0e48cb95d54e3b96c", "kind": "equivalent", "version": "9.2.17", "label": "9.2.17", "title": "修复 Windows 上 bind() 和 listen() 系统调用错误的报告", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bf2f2fe0361a5a5b6b13d12099850bfa36ba78eaeed89fdd45b6cb4bb6ab6a8e"}, "url": "/docs/compare/?release=9.2.17#9.2.17-cd087175f2b48cbf", "source_url": "/docs/release/9.2.17/#id-1.11.6.12.5"}, {"db_id": "116ddf534cc4298b2ce9e58d67cb2fe8", "kind": "equivalent", "version": "9.1.22", "label": "9.1.22", "title": "修复 Windows 上 bind() 和 listen() 系统调用错误的报告", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "bf2f2fe0361a5a5b6b13d12099850bfa36ba78eaeed89fdd45b6cb4bb6ab6a8e"}, "url": "/docs/compare/?release=9.1.22#9.1.22-cd087175f2b48cbf", "source_url": "/docs/release/9.1.22/#id-1.11.6.7.6"}]}, {"id": "9.4.8-1ebb646ed46fb913", "cves": [], "html": "<p>降低使用 Microsoft Visual Studio 构建时编译器输出的详细程度（Christian Ullrich）</p>", "text": "降低使用 Microsoft Visual Studio 构建时编译器输出的详细程度（Christian Ullrich）", "title": "降低使用 Microsoft Visual Studio 构建时编译器输出的详细程度", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "fc9f728bb7578321d22405fb46f840f6f79f1527d7506f576a78d1d8b336ad56", "section_path": ["变更"], "commit_groups": [], "identity_text": "Reduce verbosity of compiler output when building with Microsoft Visual Studio (Christian Ullrich)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/018", "db_id": "7a3891afe9938736bea802a096e04138", "patch_ids": [], "statement_hash": "09e50e6e202fa28451fddcdf0afee83b4b3defc8fa42cec3c632756845f8ef0d", "relations": [{"rule": 2, "type": "equivalent", "target": "61232729f0482913301cc0d7e6c440a1", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "09e50e6e202fa28451fddcdf0afee83b4b3defc8fa42cec3c632756845f8ef0d"}}, {"rule": 2, "type": "equivalent", "target": "cf56b471bd29a03824536d7212b750e3", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "09e50e6e202fa28451fddcdf0afee83b4b3defc8fa42cec3c632756845f8ef0d"}}, {"rule": 2, "type": "equivalent", "target": "d71802d2c796bee0af2e0ef03a38f9de", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "09e50e6e202fa28451fddcdf0afee83b4b3defc8fa42cec3c632756845f8ef0d"}}, {"rule": 2, "type": "equivalent", "target": "f136ad3114dcbc143b8c85c170721a1d", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "09e50e6e202fa28451fddcdf0afee83b4b3defc8fa42cec3c632756845f8ef0d"}}], "version": "9.4.8", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "61232729f0482913301cc0d7e6c440a1", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "减少使用 Microsoft Visual Studio 构建时编译器输出的冗长程度", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "09e50e6e202fa28451fddcdf0afee83b4b3defc8fa42cec3c632756845f8ef0d"}, "url": "/docs/compare/?release=9.5.3#9.5.3-14713f1d4b930720", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}, {"db_id": "f136ad3114dcbc143b8c85c170721a1d", "kind": "equivalent", "version": "9.3.13", "label": "9.3.13", "title": "减少使用 Microsoft Visual Studio 构建时编译器输出的冗长程度", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "09e50e6e202fa28451fddcdf0afee83b4b3defc8fa42cec3c632756845f8ef0d"}, "url": "/docs/compare/?release=9.3.13#9.3.13-14713f1d4b930720", "source_url": "/docs/release/9.3.13/#id-1.11.6.17.5"}, {"db_id": "d71802d2c796bee0af2e0ef03a38f9de", "kind": "equivalent", "version": "9.2.17", "label": "9.2.17", "title": "减少使用 Microsoft Visual Studio 构建时编译器输出的冗长程度", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "09e50e6e202fa28451fddcdf0afee83b4b3defc8fa42cec3c632756845f8ef0d"}, "url": "/docs/compare/?release=9.2.17#9.2.17-14713f1d4b930720", "source_url": "/docs/release/9.2.17/#id-1.11.6.12.5"}, {"db_id": "cf56b471bd29a03824536d7212b750e3", "kind": "equivalent", "version": "9.1.22", "label": "9.1.22", "title": "减少使用 Microsoft Visual Studio 构建时编译器输出的冗长程度", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "09e50e6e202fa28451fddcdf0afee83b4b3defc8fa42cec3c632756845f8ef0d"}, "url": "/docs/compare/?release=9.1.22#9.1.22-14713f1d4b930720", "source_url": "/docs/release/9.1.22/#id-1.11.6.7.6"}]}, {"id": "9.4.8-4449286feb8b3e7a", "cves": [], "html": "<p>修复<code>putenv()</code>在 Visual Studio 2013 下正常工作的问题（Michael Paquier）</p>", "text": "修复putenv()在 Visual Studio 2013 下正常工作的问题（Michael Paquier）", "title": "修复putenv()在 Visual Studio 2013 下正常工作的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "9c6ea7b0316c7417d74b07551388a6b6edb35f9543a08f5b6f6a232788a17465", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix putenv() to work properly with Visual Studio 2013 (Michael Paquier)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/019", "db_id": "f265d248c77f7e536a7bf3f61a090e8d", "patch_ids": [], "statement_hash": "5a25c86a5648eba90dfcc883922057036988cca023390954e88f8b13042ca866", "relations": [{"rule": 2, "type": "equivalent", "target": "21e9dd4f1dbfc44e501457958c7089ce", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5a25c86a5648eba90dfcc883922057036988cca023390954e88f8b13042ca866"}}, {"rule": 2, "type": "equivalent", "target": "9e60a5ab12dbcb933460abf53ced4fcd", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5a25c86a5648eba90dfcc883922057036988cca023390954e88f8b13042ca866"}}], "version": "9.4.8", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "21e9dd4f1dbfc44e501457958c7089ce", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "修复 putenv() 在 Visual Studio 2013 下的正确工作", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5a25c86a5648eba90dfcc883922057036988cca023390954e88f8b13042ca866"}, "url": "/docs/compare/?release=9.5.3#9.5.3-d235bdc7f5132b21", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}, {"db_id": "9e60a5ab12dbcb933460abf53ced4fcd", "kind": "equivalent", "version": "9.3.13", "label": "9.3.13", "title": "修复 putenv() 在 Visual Studio 2013 下的正确工作", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5a25c86a5648eba90dfcc883922057036988cca023390954e88f8b13042ca866"}, "url": "/docs/compare/?release=9.3.13#9.3.13-d235bdc7f5132b21", "source_url": "/docs/release/9.3.13/#id-1.11.6.17.5"}]}, {"id": "9.4.8-f6bc5b62d3be56bc", "cves": [], "html": "<p>避免可能不安全地使用 Windows 的 <code>FormatMessage()</code> 函数（Christian Ullrich）</p>\n<p>在适当之处使用 <code>FORMAT_MESSAGE_IGNORE_INSERTS</code> 标志。目前不知道这里存在实际的 bug，但小心谨慎似乎是明智的。</p>", "text": "避免可能不安全地使用 Windows 的 FormatMessage() 函数（Christian Ullrich） 在适当之处使用 FORMAT_MESSAGE_IGNORE_INSERTS 标志。目前不知道这里存在实际的 bug，但小心谨慎似乎是明智的。", "title": "避免可能不安全地使用 Windows 的 FormatMessage() 函数", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "c51616cdd2e96f073fa266202f9f29c7de93048477510dad55fbc41e8ce0a0a6", "section_path": ["变更"], "commit_groups": [], "identity_text": "Avoid possibly-unsafe use of Windows' FormatMessage() function (Christian Ullrich) Use the FORMAT_MESSAGE_IGNORE_INSERTS flag where appropriate. No live bug is known to exist here, but it seems like a good idea to be careful.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/020", "db_id": "9e736f2478d30355bea81a22347b74e4", "patch_ids": [], "statement_hash": "4f0eb8a21a6ee7835478ee8b39a7a3a9445d6521a51d6e6230dce3af243f31ba", "relations": [{"rule": 2, "type": "equivalent", "target": "1374cce413b2405053b6174d2b9dd2a4", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f0eb8a21a6ee7835478ee8b39a7a3a9445d6521a51d6e6230dce3af243f31ba"}}, {"rule": 2, "type": "equivalent", "target": "83547afdd12a20fb7887af738b9429f9", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f0eb8a21a6ee7835478ee8b39a7a3a9445d6521a51d6e6230dce3af243f31ba"}}, {"rule": 2, "type": "equivalent", "target": "843ff6f7a705472abc8ca1bf3a66d2dd", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f0eb8a21a6ee7835478ee8b39a7a3a9445d6521a51d6e6230dce3af243f31ba"}}, {"rule": 2, "type": "equivalent", "target": "c8f12bcc3a5d2869fd3159cf8aad42b3", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f0eb8a21a6ee7835478ee8b39a7a3a9445d6521a51d6e6230dce3af243f31ba"}}], "version": "9.4.8", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "83547afdd12a20fb7887af738b9429f9", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "避免可能不安全地使用 Windows 的 FormatMessage() 函数", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f0eb8a21a6ee7835478ee8b39a7a3a9445d6521a51d6e6230dce3af243f31ba"}, "url": "/docs/compare/?release=9.5.3#9.5.3-f6bc5b62d3be56bc", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}, {"db_id": "1374cce413b2405053b6174d2b9dd2a4", "kind": "equivalent", "version": "9.3.13", "label": "9.3.13", "title": "避免可能不安全地使用 Windows 的 FormatMessage() 函数", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f0eb8a21a6ee7835478ee8b39a7a3a9445d6521a51d6e6230dce3af243f31ba"}, "url": "/docs/compare/?release=9.3.13#9.3.13-f6bc5b62d3be56bc", "source_url": "/docs/release/9.3.13/#id-1.11.6.17.5"}, {"db_id": "c8f12bcc3a5d2869fd3159cf8aad42b3", "kind": "equivalent", "version": "9.2.17", "label": "9.2.17", "title": "避免可能不安全地使用 Windows 的 FormatMessage() 函数", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f0eb8a21a6ee7835478ee8b39a7a3a9445d6521a51d6e6230dce3af243f31ba"}, "url": "/docs/compare/?release=9.2.17#9.2.17-f6bc5b62d3be56bc", "source_url": "/docs/release/9.2.17/#id-1.11.6.12.5"}, {"db_id": "843ff6f7a705472abc8ca1bf3a66d2dd", "kind": "equivalent", "version": "9.1.22", "label": "9.1.22", "title": "避免可能不安全地使用 Windows 的 FormatMessage() 函数", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4f0eb8a21a6ee7835478ee8b39a7a3a9445d6521a51d6e6230dce3af243f31ba"}, "url": "/docs/compare/?release=9.1.22#9.1.22-f6bc5b62d3be56bc", "source_url": "/docs/release/9.1.22/#id-1.11.6.7.6"}]}, {"id": "9.4.8-c4d043d9e59bcb42", "cves": [], "html": "<p>将时区数据文件更新到<span>tzdata</span>发行版 2016d，以反映俄罗斯和委内瑞拉的夏令时法规变更。新增了时区名<code>Europe/Kirov</code>和<code>Asia/Tomsk</code>，以反映这些地区现在与邻近地区有不同的时区历史。</p>", "text": "将时区数据文件更新到tzdata发行版 2016d，以反映俄罗斯和委内瑞拉的夏令时法规变更。新增了时区名Europe/Kirov和Asia/Tomsk，以反映这些地区现在与邻近地区有不同的时区历史。", "title": "将时区数据文件更新到tzdata发行版 2016d，以反映俄罗斯和委内瑞拉的夏令时法规变更。新增了时区名Europe/Kirov和Asia/Tomsk，以反映这些地区现在与邻近地区有不同的时区历史。", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.4.8/#id-1.11.6.23.5", "source_hash": "576753c595f492c28360ee740466a151e91c19b300733100f3d86544acf84783", "section_path": ["变更"], "commit_groups": [], "identity_text": "Update time zone data files to tzdata release 2016d for DST law changes in Russia and Venezuela. There are new zone names Europe/Kirov and Asia/Tomsk to reflect the fact that these regions now have different time zone histories from adjacent regions.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.4.8/changes/021", "db_id": "72850db23891e29cc2438e350a1ea33b", "patch_ids": [], "statement_hash": "fee40e3c98d325f9913c0780bdacc75d834d5a2e3476deca5c8b25342cf81a8e", "relations": [{"rule": 2, "type": "equivalent", "target": "691cfe52509ead5429d7f97ff5bf105b", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fee40e3c98d325f9913c0780bdacc75d834d5a2e3476deca5c8b25342cf81a8e"}}, {"rule": 2, "type": "equivalent", "target": "79f54e8b0b7b27ff93837ee34ccf5720", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fee40e3c98d325f9913c0780bdacc75d834d5a2e3476deca5c8b25342cf81a8e"}}, {"rule": 2, "type": "equivalent", "target": "d2b408cac57b270129b64b56ed0557f0", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fee40e3c98d325f9913c0780bdacc75d834d5a2e3476deca5c8b25342cf81a8e"}}, {"rule": 2, "type": "equivalent", "target": "dbc73dfd3e223f7a6162474c523aca1d", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fee40e3c98d325f9913c0780bdacc75d834d5a2e3476deca5c8b25342cf81a8e"}}], "version": "9.4.8", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "691cfe52509ead5429d7f97ff5bf105b", "kind": "equivalent", "version": "9.5.3", "label": "9.5.3", "title": "把时区数据文件更新到 tzdata 2016d 版，涉及俄罗斯和委内瑞拉的夏令时法规变更。新增时区名称 Europe/Kirov 和 Asia/Tomsk，以反映这些地区现在与相邻地区有不同的时区历史。", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fee40e3c98d325f9913c0780bdacc75d834d5a2e3476deca5c8b25342cf81a8e"}, "url": "/docs/compare/?release=9.5.3#9.5.3-0f7afee00aec2c4f", "source_url": "/docs/release/9.5.3/#id-1.11.6.27.5"}, {"db_id": "dbc73dfd3e223f7a6162474c523aca1d", "kind": "equivalent", "version": "9.3.13", "label": "9.3.13", "title": "把时区数据文件更新到 tzdata 2016d 版，涉及俄罗斯和委内瑞拉的夏令时法规变更。新增时区名称 Europe/Kirov 和 Asia/Tomsk，以反映这些地区现在与相邻地区有不同的时区历史。", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fee40e3c98d325f9913c0780bdacc75d834d5a2e3476deca5c8b25342cf81a8e"}, "url": "/docs/compare/?release=9.3.13#9.3.13-0f7afee00aec2c4f", "source_url": "/docs/release/9.3.13/#id-1.11.6.17.5"}, {"db_id": "d2b408cac57b270129b64b56ed0557f0", "kind": "equivalent", "version": "9.2.17", "label": "9.2.17", "title": "把时区数据文件更新到 tzdata 2016d 版，涉及俄罗斯和委内瑞拉的夏令时法规变更。新增时区名称 Europe/Kirov 和 Asia/Tomsk，以反映这些地区现在与相邻地区有不同的时区历史。", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fee40e3c98d325f9913c0780bdacc75d834d5a2e3476deca5c8b25342cf81a8e"}, "url": "/docs/compare/?release=9.2.17#9.2.17-0f7afee00aec2c4f", "source_url": "/docs/release/9.2.17/#id-1.11.6.12.5"}, {"db_id": "79f54e8b0b7b27ff93837ee34ccf5720", "kind": "equivalent", "version": "9.1.22", "label": "9.1.22", "title": "把时区数据文件更新到 tzdata 2016d 版，涉及俄罗斯和委内瑞拉的夏令时法规变更。新增时区名称 Europe/Kirov 和 Asia/Tomsk，以反映这些地区现在与相邻地区有不同的时区历史。", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "fee40e3c98d325f9913c0780bdacc75d834d5a2e3476deca5c8b25342cf81a8e"}, "url": "/docs/compare/?release=9.1.22#9.1.22-0f7afee00aec2c4f", "source_url": "/docs/release/9.1.22/#id-1.11.6.7.6"}]}]}], "stats": [{"key": "all", "label": "全部变更", "count": 21}, {"key": "feature", "label": "新功能", "count": 0}, {"key": "bugfix", "label": "BUG 修复", "count": 12}, {"key": "security", "label": "安全相关", "count": 0}, {"key": "performance", "label": "性能改进", "count": 0}, {"key": "compatibility", "label": "兼容性变化", "count": 0}, {"key": "improvement", "label": "其他改进", "count": 9}], "total": 21, "release_count": 1, "cross_major": false, "cve_count": 0, "cves": [], "cve_available": true, "remaining_cves": [], "security_regressions": [], "warnings": [], "candidate_count": 21, "already_in_source_count": 0, "duplicate_count": 0, "excluded_count": 0, "exclusions": [], "source_as_of": "2026-09-26", "security_as_of": "2026-09-26"}