{"format": 1, "mode": "release", "from_release": null, "to_release": {"date": "2015-06-04", "build": "9.2.12", "major": "9.2", "minor": 12, "manual": "9.2", "status": "stable", "doc_git": "", "version": "9.2.12", "eol_date": "2017-11-09", "date_text": "2015-06-04", "supported": false, "manual_url": "/docs/9.2/release-9-2-12.html", "source_url": "/docs/release/9.2.12/", "entry_count": 4, "placeholder": false, "content_hash": "541e581793baf6a767d81510adcba4f2d7b4144ddc41438f7d04af58c3196dbb", "manual_build": "9.2.24", "source_as_of": "", "changes_count": 4, "doc_loaded_at": "2026-09-26T02:56:46.946617", "migration_html": "<p>    对于运行 9.2.X 的用户，不需要进行转储/恢复。</p><p>    不过，如果你是从早于 9.2.11 的版本升级，请参见<a href=\"/docs/9.2/release-9-2-11.html\" title=\"E.14. 版本 9.2.11\">第 E.14 节</a>。</p>", "compatibility_count": 0, "label": "9.2.12", "status_label": "历史版本", "eol": "2017-11-09", "age_days": 4136, "support_days": -3247}, "groups": [{"date": "2015-06-04", "build": "9.2.12", "major": "9.2", "minor": 12, "manual": "9.2", "status": "stable", "doc_git": "", "version": "9.2.12", "eol_date": "2017-11-09", "date_text": "2015-06-04", "supported": false, "manual_url": "/docs/9.2/release-9-2-12.html", "source_url": "/docs/release/9.2.12/", "entry_count": 4, "placeholder": false, "content_hash": "541e581793baf6a767d81510adcba4f2d7b4144ddc41438f7d04af58c3196dbb", "manual_build": "9.2.24", "source_as_of": "", "changes_count": 4, "doc_loaded_at": "2026-09-26T02:56:46.946617", "migration_html": "<p>    对于运行 9.2.X 的用户，不需要进行转储/恢复。</p><p>    不过，如果你是从早于 9.2.11 的版本升级，请参见<a href=\"/docs/9.2/release-9-2-11.html\" title=\"E.14. 版本 9.2.11\">第 E.14 节</a>。</p>", "compatibility_count": 0, "label": "9.2.12", "status_label": "历史版本", "eol": "2017-11-09", "age_days": 4136, "support_days": -3247, "entries": [{"id": "9.2.12-2f7a640e37ebd9b9", "cves": [], "html": "<p>     避免崩溃重启期间对数据目录执行<code>fsync</code>时失败（Abhijit Menon-Sen、Tom Lane）\n    </p><p>     在前几个小版本中，我们加入了一个补丁，在崩溃后对数据目录中的所有内容执行<code>fsync</code>。遗憾的是，它对任何错误情况的响应都是失败，从而阻止服务器启动，即使问题相当无害。例如，数据目录中一个不可写的文件在某些平台上会阻止重启；但把 SSL 证书文件设为服务器不可写是很常见的做法。我们修改了这一行为：权限失败被完全忽略，其他类型的失败会被记录但不会阻止继续。\n    </p>", "text": "避免崩溃重启期间对数据目录执行fsync时失败（Abhijit Menon-Sen、Tom Lane） 在前几个小版本中，我们加入了一个补丁，在崩溃后对数据目录中的所有内容执行fsync。遗憾的是，它对任何错误情况的响应都是失败，从而阻止服务器启动，即使问题相当无害。例如，数据目录中一个不可写的文件在某些平台上会阻止重启；但把 SSL 证书文件设为服务器不可写是很常见的做法。我们修改了这一行为：权限失败被完全忽略，其他类型的失败会被记录但不会阻止继续。", "title": "避免崩溃重启期间对数据目录执行fsync时失败", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.2.12/#id-1.11.6.17.5", "source_hash": "f716d74e3c86522bd13a5cb767cb1a886e58d0ae617f67a8f958d93f076e98e0", "section_path": ["变更"], "commit_groups": [], "identity_text": "Avoid failures while fsync'ing data directory during crash restart (Abhijit Menon-Sen, Tom Lane) In the previous minor releases we added a patch to fsync everything in the data directory after a crash. Unfortunately its response to any error condition was to fail, thereby preventing the server from starting up, even when the problem was quite harmless. An example is that an unwritable file in the data directory would prevent restart on some platforms; but it is common to make SSL certificate files unwritable by the server. Revise this behavior so that permissions failures are ignored altogether, and other types of failures are logged but do not prevent continuing.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.2.12/changes/001", "db_id": "81d46769ec325a47a7ac7f19fb657a38", "patch_ids": [], "statement_hash": "ae1e52f696c1fa1c4ac7802c8929b70f47d0aecd4f628003a4fffa24ca71f4f6", "relations": [{"rule": 2, "type": "equivalent", "target": "a25fd9b5724fca63d6c7e754c69ab811", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ae1e52f696c1fa1c4ac7802c8929b70f47d0aecd4f628003a4fffa24ca71f4f6"}}, {"rule": 2, "type": "equivalent", "target": "bdb384a794e9c1aecc429fe351f6cc54", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ae1e52f696c1fa1c4ac7802c8929b70f47d0aecd4f628003a4fffa24ca71f4f6"}}], "version": "9.2.12", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "bdb384a794e9c1aecc429fe351f6cc54", "kind": "equivalent", "version": "9.1.17", "label": "9.1.17", "title": "避免崩溃重启期间对数据目录执行fsync时失败", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ae1e52f696c1fa1c4ac7802c8929b70f47d0aecd4f628003a4fffa24ca71f4f6"}, "url": "/docs/compare/?release=9.1.17#9.1.17-2f7a640e37ebd9b9", "source_url": "/docs/release/9.1.17/#id-1.11.6.12.5"}, {"db_id": "a25fd9b5724fca63d6c7e754c69ab811", "kind": "equivalent", "version": "9.0.21", "label": "9.0.21", "title": "避免崩溃重启期间对数据目录执行fsync时失败", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "ae1e52f696c1fa1c4ac7802c8929b70f47d0aecd4f628003a4fffa24ca71f4f6"}, "url": "/docs/compare/?release=9.0.21#9.0.21-2f7a640e37ebd9b9", "source_url": "/docs/release/9.0.21/#id-1.11.6.7.6"}]}, {"id": "9.2.12-09e3e9d395afa412", "cves": [], "html": "<p>      修复<code>pg_get_functiondef()</code>以在设置了<code>LEAKPROOF</code>属性时显示该属性（Jeevan Chalke）\n     </p>", "text": "修复pg_get_functiondef()以在设置了LEAKPROOF属性时显示该属性（Jeevan Chalke）", "title": "修复pg_get_functiondef()以在设置了LEAKPROOF属性时显示该属性", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.2.12/#id-1.11.6.17.5", "source_hash": "8117e90d3e7b25b803a2c1767f5667b4aaaeb28a77a0ecad2ce727f3e290aab8", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix pg_get_functiondef() to show functions' LEAKPROOF property, if set (Jeevan Chalke)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.2.12/changes/002", "db_id": "32d3565e5928977c53bd58dcd2b7fe44", "patch_ids": [], "statement_hash": "6779d1236077b9c72d597d4631c017dca37b19d22f3e032a888ed81a3bd53a43", "relations": [{"rule": 2, "type": "equivalent", "target": "31c0f1e019f4b9db01b461fb9b665407", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6779d1236077b9c72d597d4631c017dca37b19d22f3e032a888ed81a3bd53a43"}}, {"rule": 2, "type": "equivalent", "target": "db451542379bdb561ad23857143b49b1", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6779d1236077b9c72d597d4631c017dca37b19d22f3e032a888ed81a3bd53a43"}}], "version": "9.2.12", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": [{"db_id": "31c0f1e019f4b9db01b461fb9b665407", "kind": "equivalent", "version": "9.4.3", "label": "9.4.3", "title": "修复 pg_get_functiondef()，使其在设置了函数的 LEAKPROOF 属性时加以显示", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6779d1236077b9c72d597d4631c017dca37b19d22f3e032a888ed81a3bd53a43"}, "url": "/docs/compare/?release=9.4.3#9.4.3-52a190ea0381bb5c", "source_url": "/docs/release/9.4.3/#id-1.11.6.28.5"}, {"db_id": "db451542379bdb561ad23857143b49b1", "kind": "equivalent", "version": "9.3.8", "label": "9.3.8", "title": "修复pg_get_functiondef()以在设置了LEAKPROOF属性时显示该属性", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "6779d1236077b9c72d597d4631c017dca37b19d22f3e032a888ed81a3bd53a43"}, "url": "/docs/compare/?release=9.3.8#9.3.8-09e3e9d395afa412", "source_url": "/docs/release/9.3.8/#id-1.11.6.22.5"}]}, {"id": "9.2.12-84bd20edf1411571", "cves": [], "html": "<p>     移除<span>configure</span>中对在<span>OpenBSD</span>上链接线程版<span>libpython</span>的禁止性检查（Tom Lane）\n    </p><p>     这一限制原本要防止的失败在当前的<span>OpenBSD</span>版本上似乎已不再是问题。\n    </p>", "text": "移除configure中对在OpenBSD上链接线程版libpython的禁止性检查（Tom Lane） 这一限制原本要防止的失败在当前的OpenBSD版本上似乎已不再是问题。", "title": "移除configure中对在OpenBSD上链接线程版libpython的禁止性检查", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.2.12/#id-1.11.6.17.5", "source_hash": "4829477f3642c35fd183079bd3b0d9180b6b0d01ef3c6c7bda9fdd1569d09d84", "section_path": ["变更"], "commit_groups": [], "identity_text": "Remove configure's check prohibiting linking to a threaded libpython on OpenBSD (Tom Lane) The failure this restriction was meant to prevent seems to not be a problem anymore on current OpenBSD versions.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.2.12/changes/003", "db_id": "eccce48eb13e0f65df91e2c5e930e4a7", "patch_ids": [], "statement_hash": "68071bf088d7e12cc2dce093a3d98233044c107e8eeccf6ca8c3386b62eed42f", "relations": [{"rule": 2, "type": "equivalent", "target": "10f39cf4b186eb685734a9facee64db2", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "68071bf088d7e12cc2dce093a3d98233044c107e8eeccf6ca8c3386b62eed42f"}}, {"rule": 2, "type": "equivalent", "target": "1e93d1263f6654a9f810f95db30e9629", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "68071bf088d7e12cc2dce093a3d98233044c107e8eeccf6ca8c3386b62eed42f"}}, {"rule": 2, "type": "equivalent", "target": "8ce60f049896e6069362812ad897b3f3", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "68071bf088d7e12cc2dce093a3d98233044c107e8eeccf6ca8c3386b62eed42f"}}, {"rule": 2, "type": "equivalent", "target": "90ce555f635b5854723e082d7618f9e5", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "68071bf088d7e12cc2dce093a3d98233044c107e8eeccf6ca8c3386b62eed42f"}}], "version": "9.2.12", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "1e93d1263f6654a9f810f95db30e9629", "kind": "equivalent", "version": "9.4.3", "label": "9.4.3", "title": "移除configure中对在OpenBSD上链接线程版libpython的禁止性检查", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "68071bf088d7e12cc2dce093a3d98233044c107e8eeccf6ca8c3386b62eed42f"}, "url": "/docs/compare/?release=9.4.3#9.4.3-84bd20edf1411571", "source_url": "/docs/release/9.4.3/#id-1.11.6.28.5"}, {"db_id": "10f39cf4b186eb685734a9facee64db2", "kind": "equivalent", "version": "9.3.8", "label": "9.3.8", "title": "移除configure中对在OpenBSD上链接线程版libpython的禁止性检查", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "68071bf088d7e12cc2dce093a3d98233044c107e8eeccf6ca8c3386b62eed42f"}, "url": "/docs/compare/?release=9.3.8#9.3.8-84bd20edf1411571", "source_url": "/docs/release/9.3.8/#id-1.11.6.22.5"}, {"db_id": "8ce60f049896e6069362812ad897b3f3", "kind": "equivalent", "version": "9.1.17", "label": "9.1.17", "title": "移除configure中对在OpenBSD上链接线程版libpython的禁止性检查", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "68071bf088d7e12cc2dce093a3d98233044c107e8eeccf6ca8c3386b62eed42f"}, "url": "/docs/compare/?release=9.1.17#9.1.17-84bd20edf1411571", "source_url": "/docs/release/9.1.17/#id-1.11.6.12.5"}, {"db_id": "90ce555f635b5854723e082d7618f9e5", "kind": "equivalent", "version": "9.0.21", "label": "9.0.21", "title": "移除configure中对在OpenBSD上链接线程版libpython的禁止性检查", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "68071bf088d7e12cc2dce093a3d98233044c107e8eeccf6ca8c3386b62eed42f"}, "url": "/docs/compare/?release=9.0.21#9.0.21-84bd20edf1411571", "source_url": "/docs/release/9.0.21/#id-1.11.6.7.6"}]}, {"id": "9.2.12-255c84fcb54cc418", "cves": [], "html": "<p>      允许 <span>libpq</span> 使用高于 v1 的 TLS 协议版本（Noah Misch）\n     </p><p>      长期以来，<span>libpq</span> 的代码只允许使用 TLS v1 这一种 SSL 协议。随着较新的 TLS 版本日益普及，现在允许它与服务器协商双方共同支持的最高 TLS 版本。（<span>PostgreSQL</span> 服务器早已支持这种协商，因此服务器端无需更改。）这是对 9.4.0 中已发布变更的回移植。\n     </p>", "text": "允许 libpq 使用高于 v1 的 TLS 协议版本（Noah Misch） 长期以来，libpq 的代码只允许使用 TLS v1 这一种 SSL 协议。随着较新的 TLS 版本日益普及，现在允许它与服务器协商双方共同支持的最高 TLS 版本。（PostgreSQL 服务器早已支持这种协商，因此服务器端无需更改。）这是对 9.4.0 中已发布变更的回移植。", "title": "允许 libpq 使用高于 v1 的 TLS 协议版本", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.2.12/#id-1.11.6.17.5", "source_hash": "6f7cca693ca86c2fb1dcc179656b0a1b75ef5a77bef86cb24a0afff1a9825270", "section_path": ["变更"], "commit_groups": [], "identity_text": "Allow libpq to use TLS protocol versions beyond v1 (Noah Misch) For a long time, libpq was coded so that the only SSL protocol it would allow was TLS v1. Now that newer TLS versions are becoming popular, allow it to negotiate the highest commonly-supported TLS version with the server. (PostgreSQL servers were already capable of such negotiation, so no change is needed on the server side.) This is a back-patch of a change already released in 9.4.0.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.2.12/changes/004", "db_id": "9c6e7ee4cfa8d800c33954d1209311e4", "patch_ids": [], "statement_hash": "5166e3ffeedb78ec7475a28d0c97a87af4f3fd59758bcc4f8a9925eded75358d", "relations": [{"rule": 2, "type": "equivalent", "target": "1daf8e2295ac336ff6c33b27c7a9be9f", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5166e3ffeedb78ec7475a28d0c97a87af4f3fd59758bcc4f8a9925eded75358d"}}, {"rule": 2, "type": "equivalent", "target": "28741ee10e8b433a8aeb115ce6d15396", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5166e3ffeedb78ec7475a28d0c97a87af4f3fd59758bcc4f8a9925eded75358d"}}, {"rule": 2, "type": "equivalent", "target": "b06ddb7790a178ed05796c42bfebc6de", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5166e3ffeedb78ec7475a28d0c97a87af4f3fd59758bcc4f8a9925eded75358d"}}], "version": "9.2.12", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "1daf8e2295ac336ff6c33b27c7a9be9f", "kind": "equivalent", "version": "9.3.8", "label": "9.3.8", "title": "允许 libpq 使用高于 v1 的 TLS 协议版本", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5166e3ffeedb78ec7475a28d0c97a87af4f3fd59758bcc4f8a9925eded75358d"}, "url": "/docs/compare/?release=9.3.8#9.3.8-255c84fcb54cc418", "source_url": "/docs/release/9.3.8/#id-1.11.6.22.5"}, {"db_id": "b06ddb7790a178ed05796c42bfebc6de", "kind": "equivalent", "version": "9.1.17", "label": "9.1.17", "title": "允许 libpq 使用高于 v1 的 TLS 协议版本", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5166e3ffeedb78ec7475a28d0c97a87af4f3fd59758bcc4f8a9925eded75358d"}, "url": "/docs/compare/?release=9.1.17#9.1.17-255c84fcb54cc418", "source_url": "/docs/release/9.1.17/#id-1.11.6.12.5"}, {"db_id": "28741ee10e8b433a8aeb115ce6d15396", "kind": "equivalent", "version": "9.0.21", "label": "9.0.21", "title": "允许 libpq 使用高于 v1 的 TLS 协议版本", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "5166e3ffeedb78ec7475a28d0c97a87af4f3fd59758bcc4f8a9925eded75358d"}, "url": "/docs/compare/?release=9.0.21#9.0.21-255c84fcb54cc418", "source_url": "/docs/release/9.0.21/#id-1.11.6.7.6"}]}]}], "stats": [{"key": "all", "label": "全部变更", "count": 4}, {"key": "feature", "label": "新功能", "count": 0}, {"key": "bugfix", "label": "BUG 修复", "count": 2}, {"key": "security", "label": "安全相关", "count": 0}, {"key": "performance", "label": "性能改进", "count": 0}, {"key": "compatibility", "label": "兼容性变化", "count": 0}, {"key": "improvement", "label": "其他改进", "count": 2}], "total": 4, "release_count": 1, "cross_major": false, "cve_count": 0, "cves": [], "cve_available": true, "remaining_cves": [], "security_regressions": [], "warnings": [], "candidate_count": 4, "already_in_source_count": 0, "duplicate_count": 0, "excluded_count": 0, "exclusions": [], "source_as_of": "2026-09-26", "security_as_of": "2026-09-26"}