{"format": 1, "mode": "release", "from_release": null, "to_release": {"date": "2010-12-16", "build": "9.0.2", "major": "9.0", "minor": 2, "manual": "9.0", "status": "stable", "doc_git": "", "version": "9.0.2", "eol_date": "2015-10-08", "date_text": "2010-12-16", "supported": false, "manual_url": "/docs/9.0/release-9-0-2.html", "source_url": "/docs/release/9.0.2/", "entry_count": 42, "placeholder": false, "content_hash": "74d2219c591db7824c1cdf20cea79a39f64bbc2735e18896281b8550deaf7ea0", "manual_build": "9.0.23", "source_as_of": "", "changes_count": 42, "doc_loaded_at": "2026-09-26T02:56:48.570247", "migration_html": "<p>对于运行 9.0.X 的用户，不需要进行转储/恢复。</p>", "compatibility_count": 0, "label": "9.0.2", "status_label": "历史版本", "eol": "2015-10-08", "age_days": 5767, "support_days": -4010}, "groups": [{"date": "2010-12-16", "build": "9.0.2", "major": "9.0", "minor": 2, "manual": "9.0", "status": "stable", "doc_git": "", "version": "9.0.2", "eol_date": "2015-10-08", "date_text": "2010-12-16", "supported": false, "manual_url": "/docs/9.0/release-9-0-2.html", "source_url": "/docs/release/9.0.2/", "entry_count": 42, "placeholder": false, "content_hash": "74d2219c591db7824c1cdf20cea79a39f64bbc2735e18896281b8550deaf7ea0", "manual_build": "9.0.23", "source_as_of": "", "changes_count": 42, "doc_loaded_at": "2026-09-26T02:56:48.570247", "migration_html": "<p>对于运行 9.0.X 的用户，不需要进行转储/恢复。</p>", "compatibility_count": 0, "label": "9.0.2", "status_label": "历史版本", "eol": "2015-10-08", "age_days": 5767, "support_days": -4010, "entries": [{"id": "9.0.2-8d507d44af5ad2de", "cves": [], "html": "<p>强制 Linux 上的默认 <a href=\"/docs/9.0/runtime-config-wal.html#GUC-WAL-SYNC-METHOD\"><code>wal_sync_method</code></a> 为 <code>fdatasync</code>（Tom Lane、Marti Raudsepp）</p>\n<p>Linux 上的默认值实际上多年来一直是 <code>fdatasync</code>，但最近的内核变更导致 <span>PostgreSQL</span> 改选 <code>open_datasync</code>。这一选择没有带来任何性能改进，反而在某些文件系统（特别是使用 <code>data=journal</code> 挂载选项的 <code>ext4</code>）上导致彻底失败。</p>", "text": "强制 Linux 上的默认 wal_sync_method 为 fdatasync（Tom Lane、Marti Raudsepp） Linux 上的默认值实际上多年来一直是 fdatasync，但最近的内核变更导致 PostgreSQL 改选 open_datasync。这一选择没有带来任何性能改进，反而在某些文件系统（特别是使用 data=journal 挂载选项的 ext4）上导致彻底失败。", "title": "强制 Linux 上的默认 wal_sync_method 为 fdatasync", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "ee2b55ff589022ba8af9416f4c80719b1829f941c1b7ea8ce26cbfa5f9765431", "section_path": ["变更"], "commit_groups": [], "identity_text": "Force the default wal_sync_method to be fdatasync on Linux (Tom Lane, Marti Raudsepp) The default on Linux has actually been fdatasync for many years, but recent kernel changes caused PostgreSQL to choose open_datasync instead. This choice did not result in any performance improvement, and caused outright failures on certain filesystems, notably ext4 with the data=journal mount option.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/001", "db_id": "93d301488fb125ac7a34020db3ce88ef", "patch_ids": [], "statement_hash": "608b4ef667312ab6b50f4f61b11cc5a13d04f1dd299e885f754ae809486f04de", "relations": [], "version": "9.0.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-ee341b9eaa6a2f36", "cves": [], "html": "<p>修复热备重放期间的 <span>“<span>too many KnownAssignedXids</span>”</span> 错误（Heikki Linnakangas）</p>", "text": "修复热备重放期间的 “too many KnownAssignedXids” 错误（Heikki Linnakangas）", "title": "修复热备重放期间的 “too many KnownAssignedXids” 错误", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "341611f99a3b78a339dd8c64bf7a9c8f3222342dc421f741a3d98f8c095b2eda", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix too many KnownAssignedXids error during Hot Standby replay (Heikki Linnakangas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/002", "db_id": "f1697701e87c0b4c41c0abc14a1bda44", "patch_ids": [], "statement_hash": "bc0dc120091e35d011498e5af3419ec29fda2d51f375e704a8f773c0d97e39c5", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-3979ca633a4a1844", "cves": [], "html": "<p>修复热备期间锁获取中的竞态条件（Simon Riggs）</p>", "text": "修复热备期间锁获取中的竞态条件（Simon Riggs）", "title": "修复热备期间锁获取中的竞态条件", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "07dcea70770d22d29cf47c90965a7342490f600b41072a5203e923e66537f914", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix race condition in lock acquisition during Hot Standby (Simon Riggs)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/003", "db_id": "5fdb06cb9620d7f0e13e888df230f619", "patch_ids": [], "statement_hash": "6ec2c9f8db734a5e0d1aae4a42a77e421ab757f85d1ec6deec513b166505148d", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-8ae46a5ddae45b74", "cves": [], "html": "<p>避免热备期间不必要的冲突（Simon Riggs）</p>\n<p>这修复了一些重放被认为与备库查询冲突（导致重放延迟或可能取消查询）但实际上并不存在真正冲突的情况。</p>", "text": "避免热备期间不必要的冲突（Simon Riggs） 这修复了一些重放被认为与备库查询冲突（导致重放延迟或可能取消查询）但实际上并不存在真正冲突的情况。", "title": "避免热备期间不必要的冲突", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "ebf3aa392a32b83b337a979681bb0528bccc6246593ff3ca66cccad6c4a8fe49", "section_path": ["变更"], "commit_groups": [], "identity_text": "Avoid unnecessary conflicts during Hot Standby (Simon Riggs) This fixes some cases where replay was considered to conflict with standby queries (causing delay of replay or possibly cancellation of the queries), but there was no real conflict.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/004", "db_id": "d9811dd344bfcca6c0fb7cf3e4680308", "patch_ids": [], "statement_hash": "cd2ce58b30dbbbbb00f7df5e13d43a323acb8616a859bd458cc2821ba17f4b8e", "relations": [], "version": "9.0.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-e5fa1d98be7f75dd", "cves": [], "html": "<p>修复 GIN 索引 WAL 重放逻辑中的若干缺陷（Tom Lane）</p>\n<p>这可能导致复制期间的 <span>“<span>bad buffer id: 0</span>”</span> 失败或索引内容损坏。</p>", "text": "修复 GIN 索引 WAL 重放逻辑中的若干缺陷（Tom Lane） 这可能导致复制期间的 “bad buffer id: 0” 失败或索引内容损坏。", "title": "修复 GIN 索引 WAL 重放逻辑中的若干缺陷", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "2b9e57fbedcab283c28b6526bfd65355616a6f7c87365caebc8634c937df7306", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane) This could result in bad buffer id: 0 failures or corruption of index contents during replication.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/005", "db_id": "edd6115c947e48657925129caeab1881", "patch_ids": [], "statement_hash": "b786728336e1aa8b4322f52df47a737eee9d644353a60b8ae31db8902b43b267", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-5dfc21756f679dce", "cves": [], "html": "<p>修复当起始检查点 WAL 记录与其重做点不在同一 WAL 段时从基础备份恢复的问题（Jeff Davis）</p>", "text": "修复当起始检查点 WAL 记录与其重做点不在同一 WAL 段时从基础备份恢复的问题（Jeff Davis）", "title": "修复当起始检查点 WAL 记录与其重做点不在同一 WAL 段时从基础备份恢复的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "17030fa918d971b036e7fb9150ec046c6541f9bfa7a0755772c0f0521f825b78", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix recovery from base backup when the starting checkpoint WAL record is not in the same WAL segment as its redo point (Jeff Davis)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/006", "db_id": "82cb95a0139d2515253f2b4ea69ea50f", "patch_ids": [], "statement_hash": "bb3643dfb08e25e4f7da74a044e0489c7d14555385f4b17a6668756a56dfef0f", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-ee020f928b55b63d", "cves": [], "html": "<p>修复在创建主数据库集簇后立即启用流复制时的极端情况缺陷（Heikki Linnakangas）</p>", "text": "修复在创建主数据库集簇后立即启用流复制时的极端情况缺陷（Heikki Linnakangas）", "title": "修复在创建主数据库集簇后立即启用流复制时的极端情况缺陷", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "837d44284d2a117039dcf1576943aafc7eab7039f8abb02da9737b4804c29124", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix corner-case bug when streaming replication is enabled immediately after creating the master database cluster (Heikki Linnakangas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/007", "db_id": "e5f512540ad951d21a24dba301686857", "patch_ids": [], "statement_hash": "6e7778f8df3a3d722fad102811f27c784abd32c26f311e3235f066c0be644c2c", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-d72ee9420915ad35", "cves": [], "html": "<p>修复多个工作进程长期保持活动时自动清理工作进程的持续变慢（Tom Lane）</p>\n<p>如果自动清理工作进程处理了足够多的表，其有效 <code>vacuum_cost_limit</code> 可能降到接近零，导致其运行极慢。</p>", "text": "修复多个工作进程长期保持活动时自动清理工作进程的持续变慢（Tom Lane） 如果自动清理工作进程处理了足够多的表，其有效 vacuum_cost_limit 可能降到接近零，导致其运行极慢。", "title": "修复多个工作进程长期保持活动时自动清理工作进程的持续变慢", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "4fb8a8c67170308ba979030d7618ca079fa8d55759d68a661392505368933793", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix persistent slowdown of autovacuum workers when multiple workers remain active for a long time (Tom Lane) The effective vacuum_cost_limit for an autovacuum worker could drop to nearly zero if it processed enough tables, causing it to run extremely slowly.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/008", "db_id": "753d1138c5b8e46255b4bdad6d8ba546", "patch_ids": [], "statement_hash": "285618da7240131acadd496b1df387a960b12f7bf5c90e6dd0012d2c49e2aac4", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-a4589bdd11838fd8", "cves": [], "html": "<p>修复自动清理启动器中的长期内存泄漏（Alvaro Herrera）</p>", "text": "修复自动清理启动器中的长期内存泄漏（Alvaro Herrera）", "title": "修复自动清理启动器中的长期内存泄漏", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "3c72b69c2d7b6a6318cdda2246062fa514892cff1b54e12d7f1969d3c432d3c7", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix long-term memory leak in autovacuum launcher (Alvaro Herrera)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/009", "db_id": "c9831dcd37fe25019d286bb76f90643c", "patch_ids": [], "statement_hash": "b994018836cc84e5d5f67e58ad2f82318e123bc05275171db55ddf1271d517d7", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-86de0401e758d15d", "cves": [], "html": "<p>避免在事务之外尝试报告即将发生的事务回卷情况时失败（Tom Lane）</p>\n<p>这一疏忽阻碍了事务回卷过于接近后的恢复，因为数据库启动处理会失败。</p>", "text": "避免在事务之外尝试报告即将发生的事务回卷情况时失败（Tom Lane） 这一疏忽阻碍了事务回卷过于接近后的恢复，因为数据库启动处理会失败。", "title": "避免在事务之外尝试报告即将发生的事务回卷情况时失败", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "a636c5d0b59cd2de1f201796f40c0fb25b985cbfc9c00bccf2db99aef3f1666f", "section_path": ["变更"], "commit_groups": [], "identity_text": "Avoid failure when trying to report an impending transaction wraparound condition from outside a transaction (Tom Lane) This oversight prevented recovery after transaction wraparound got too close, because database startup processing would fail.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/010", "db_id": "dfebd202963a9ce011fae5e5f1d6833f", "patch_ids": [], "statement_hash": "d7ae3b75ead5df98916a650937287bf390c47f0ba3bc75adab94dbebc0427184", "relations": [], "version": "9.0.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-6ecfc4b1e05231e6", "cves": [], "html": "<p>新增在 <code>IA64</code> 上检测寄存器栈溢出的支持（Tom Lane）</p>\n<p><code>IA64</code> 架构有两个硬件栈。要完全防止栈溢出失败需要同时检查两者。</p>", "text": "新增在 IA64 上检测寄存器栈溢出的支持（Tom Lane） IA64 架构有两个硬件栈。要完全防止栈溢出失败需要同时检查两者。", "title": "新增在 IA64 上检测寄存器栈溢出的支持", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "2d3d0548d2230220dcf8f675ed2a02a7550770f9d0966ec8290ffb504d4a5622", "section_path": ["变更"], "commit_groups": [], "identity_text": "Add support for detecting register-stack overrun on IA64 (Tom Lane) The IA64 architecture has two hardware stacks. Full prevention of stack-overrun failures requires checking both.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/011", "db_id": "2dc8159d5221a2cd44ad4f0816040dbf", "patch_ids": [], "statement_hash": "8fba9ae3fc03d31bf3b3ea6bc438e6ca28b0b0afcd3c0bc9a3c60a7082ed23bc", "relations": [], "version": "9.0.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-1996248393e19710", "cves": [], "html": "<p>在 <code>copyObject()</code> 中添加栈溢出检查（Tom Lane）</p>\n<p>给定足够复杂的查询，某些代码路径可能因栈溢出而崩溃。</p>", "text": "在 copyObject() 中添加栈溢出检查（Tom Lane） 给定足够复杂的查询，某些代码路径可能因栈溢出而崩溃。", "title": "在 copyObject() 中添加栈溢出检查", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "57c52797bf15087c584f5a1856593654c5b96239605c639d7d610a5487d58669", "section_path": ["变更"], "commit_groups": [], "identity_text": "Add a check for stack overflow in copyObject() (Tom Lane) Certain code paths could crash due to stack overflow given a sufficiently complex query.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/012", "db_id": "fab3556994f348a8bde09dbac5023e3d", "patch_ids": [], "statement_hash": "62598be390dbf15864e5ac4d9c300f0563b57ff0fa0b291f11b320c61ed1e111", "relations": [], "version": "9.0.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-b1e07dd3cbb9d09b", "cves": [], "html": "<p>修复临时 GiST 索引中页面分裂的检测（Heikki Linnakangas）</p>\n<p>在临时索引中可能出现<span>“<span>并发</span>”</span>页面分裂，例如当插入时有打开的游标正在扫描该索引。GiST 未能检测到这种情况，因此当游标继续执行时可能给出错误结果。</p>", "text": "修复临时 GiST 索引中页面分裂的检测（Heikki Linnakangas） 在临时索引中可能出现“并发”页面分裂，例如当插入时有打开的游标正在扫描该索引。GiST 未能检测到这种情况，因此当游标继续执行时可能给出错误结果。", "title": "修复临时 GiST 索引中页面分裂的检测", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "677f5871fb0178d12de5359da4017f18efd05d6743a03e1504d493c2402a7979", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix detection of page splits in temporary GiST indexes (Heikki Linnakangas) It is possible to have a concurrent page split in a temporary index, if for example there is an open cursor scanning the index when an insertion is done. GiST failed to detect this case and hence could deliver wrong results when execution of the cursor continued.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/013", "db_id": "5631626feed6c5f4f206cb0327b6250e", "patch_ids": [], "statement_hash": "f353fa08e38e5defbbf7064341a3b648ffa03547cde3cc12d936282127212f3b", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-d2d674855db376f4", "cves": [], "html": "<p>修复早期连接处理期间的错误检查（Tom Lane）</p>\n<p>某些情况下对子进程过多的检查被跳过，可能在尝试把新子进程添加到固定大小数组时导致 postmaster 崩溃。</p>", "text": "修复早期连接处理期间的错误检查（Tom Lane） 某些情况下对子进程过多的检查被跳过，可能在尝试把新子进程添加到固定大小数组时导致 postmaster 崩溃。", "title": "修复早期连接处理期间的错误检查", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "76fa2df108b17410b274655f8dc4a4a700dca4a0f7f1016cf5f46a2c62bc660f", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix error checking during early connection processing (Tom Lane) The check for too many child processes was skipped in some cases, possibly leading to postmaster crash when attempting to add the new child process to fixed-size arrays.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/014", "db_id": "2c8d8613775f30a53c411ca19fb94386", "patch_ids": [], "statement_hash": "3ee7f433e68384fd176acbc3d6b6ed34a68dae759bc9479656ca998f7d2099b0", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-74464b009f93e99c", "cves": [], "html": "<p>改进窗口函数的效率（Tom Lane）</p>\n<p>某些需要提前读取大量元组、但 <code>work_mem</code> 足够大可以全部保存在内存中的情况意外地慢。<code>percent_rank()</code>、<code>cume_dist()</code> 和 <code>ntile()</code> 尤其受此问题影响。</p>", "text": "改进窗口函数的效率（Tom Lane） 某些需要提前读取大量元组、但 work_mem 足够大可以全部保存在内存中的情况意外地慢。percent_rank()、cume_dist() 和 ntile() 尤其受此问题影响。", "title": "改进窗口函数的效率", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "2a3e1cbbb5ac1701ac6d028fe0e4e7f9349e4398508987998f994c8986fa86af", "section_path": ["变更"], "commit_groups": [], "identity_text": "Improve efficiency of window functions (Tom Lane) Certain cases where a large number of tuples needed to be read in advance, but work_mem was large enough to allow them all to be held in memory, were unexpectedly slow. percent_rank(), cume_dist() and ntile() in particular were subject to this problem.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/015", "db_id": "ad0dacf2ae16680eea7b7313842bfd6f", "patch_ids": [], "statement_hash": "e51f9e5fef9181abeda8fdc4ad9d27c30e1907b11b50ead24532b347e1e2aed4", "relations": [], "version": "9.0.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-7aa243d20ba316fc", "cves": [], "html": "<p>避免在 <code>ANALYZE</code> 复杂索引表达式时内存泄漏（Tom Lane）</p>", "text": "避免在 ANALYZE 复杂索引表达式时内存泄漏（Tom Lane）", "title": "避免在 ANALYZE 复杂索引表达式时内存泄漏", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "b0052f474bd8a2e449fd0364b4728056ebbbac20374e8de7552412cbd2f0d29a", "section_path": ["变更"], "commit_groups": [], "identity_text": "Avoid memory leakage while ANALYZE'ing complex index expressions (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/016", "db_id": "51f8ccca1a31b925ac22e367ea7c7938", "patch_ids": [], "statement_hash": "16f9df371942fa8d6ea6e287ffdcbef3f50d30f1c9760cca49adea47cc823095", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-51df90790773d742", "cves": [], "html": "<p>确保使用整行 Var 的索引仍依赖于其表（Tom Lane）</p>\n<p>像 <code>create index i on t (foo(t.*))</code> 这样声明的索引在删除其表时不会自动被删除。</p>", "text": "确保使用整行 Var 的索引仍依赖于其表（Tom Lane） 像 create index i on t (foo(t.*)) 这样声明的索引在删除其表时不会自动被删除。", "title": "确保使用整行 Var 的索引仍依赖于其表", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "ee123dad93cb693b02e02039e0300d816f6ec5b16f7c04fad9f3992d165798c1", "section_path": ["变更"], "commit_groups": [], "identity_text": "Ensure an index that uses a whole-row Var still depends on its table (Tom Lane) An index declared like create index i on t (foo(t.*)) would not automatically get dropped when its table was dropped.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/017", "db_id": "a671cb3e3383f7e46c1c745183a9152f", "patch_ids": [], "statement_hash": "c844d95a27e7000c4d1b9241a17dcc81ecd59589be2a7ecda80d1fb201b1799e", "relations": [], "version": "9.0.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-c8dd4970cc2c67b5", "cves": [], "html": "<p>补齐 <code>DROP OWNED BY</code> 中缺失的移除用户所拥有的外部数据包装器/服务器权限的支持（Heikki Linnakangas）</p>", "text": "补齐 DROP OWNED BY 中缺失的移除用户所拥有的外部数据包装器/服务器权限的支持（Heikki Linnakangas）", "title": "补齐 DROP OWNED BY 中缺失的移除用户所拥有的外部数据包装器/服务器权限的支持", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "56cc1551c55bece45fe619dc83892fee5d8f71c87f4e8e79be2631e386ea2779", "section_path": ["变更"], "commit_groups": [], "identity_text": "Add missing support in DROP OWNED BY for removing foreign data wrapper/server privileges belonging to a user (Heikki Linnakangas)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/018", "db_id": "bd220dd392692308f91569ba370806cc", "patch_ids": [], "statement_hash": "208734b6e17de973e30925b2c74a1e7a45c96c368268825b505d41ff9fe0baeb", "relations": [], "version": "9.0.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-574ed569227c5b22", "cves": [], "html": "<p>不要<span>“<span>内联</span>”</span>带多个 <code>OUT</code> 参数的 SQL 函数（Tom Lane）</p>\n<p>这避免了因丢失预期结果行类型信息而可能出现的崩溃。</p>", "text": "不要“内联”带多个 OUT 参数的 SQL 函数（Tom Lane） 这避免了因丢失预期结果行类型信息而可能出现的崩溃。", "title": "不要“内联”带多个 OUT 参数的 SQL 函数", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "7a1df660a071de5c07e46ffd4501de08f7cc69d75d309c073e2512ec9b50e2f2", "section_path": ["变更"], "commit_groups": [], "identity_text": "Do not inline a SQL function with multiple OUT parameters (Tom Lane) This avoids a possible crash due to loss of information about the expected result rowtype.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/019", "db_id": "29d1c0c80db664df87358d57c0c753e1", "patch_ids": [], "statement_hash": "8107f7046b4add0aa1d745b767c84eec84043050816d8c26e19abcee818edf4d", "relations": [], "version": "9.0.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-4cd3c45d53ee6587", "cves": [], "html": "<p>修复内联参数列表包含对可内联用户函数引用的集合返回函数时的崩溃（Tom Lane）</p>", "text": "修复内联参数列表包含对可内联用户函数引用的集合返回函数时的崩溃（Tom Lane）", "title": "修复内联参数列表包含对可内联用户函数引用的集合返回函数时的崩溃", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "14148e0cbba2f2866eeee2f07c88e11c182b3d81a583223417417ddcf82234a9", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix crash when inline-ing a set-returning function whose argument list contains a reference to an inline-able user function (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/020", "db_id": "cdf261c7539717bd796221b71b021577", "patch_ids": [], "statement_hash": "6b75dc2712841c495a1fa669a52f11d749103a14ce6355a6ebb5e0e8e870e3bd", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-18512023d83fe0d8", "cves": [], "html": "<p>修复当 <code>ORDER BY</code>、<code>LIMIT</code>、<code>FOR UPDATE</code> 或 <code>WITH</code> 附加到 <code>INSERT ... VALUES</code> 的 <code>VALUES</code> 部分时的正确行为（Tom Lane）</p>", "text": "修复当 ORDER BY、LIMIT、FOR UPDATE 或 WITH 附加到 INSERT ... VALUES 的 VALUES 部分时的正确行为（Tom Lane）", "title": "修复当 ORDER BY、LIMIT、FOR UPDATE 或 WITH 附加到 INSERT ... VALUES 的 VALUES 部分时的正确行为", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "4bc629a71477852a3612ddb85f0fe46001ef20730d0b0ef017deef417ba01f6b", "section_path": ["变更"], "commit_groups": [], "identity_text": "Behave correctly if ORDER BY, LIMIT, FOR UPDATE, or WITH is attached to the VALUES part of INSERT ... VALUES (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/021", "db_id": "ded8d85be9ab103a764ffd254cabb3eb", "patch_ids": [], "statement_hash": "4c3bc408ee16215545d3890c485cbe8469db8b9097a3c299aaa3ac57a324fe29", "relations": [], "version": "9.0.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-3ec5210cdaa9d1a5", "cves": [], "html": "<p>把 <code>OFF</code> 关键字改为非保留（Heikki Linnakangas）</p>\n<p>这避免了在 <span>PL/pgSQL</span> 中使用 <code>off</code> 作为变量名的问题。这在 9.0 之前可行，但现在被破坏了，因为 <span>PL/pgSQL</span> 现在把所有核心保留字视为保留。</p>", "text": "把 OFF 关键字改为非保留（Heikki Linnakangas） 这避免了在 PL/pgSQL 中使用 off 作为变量名的问题。这在 9.0 之前可行，但现在被破坏了，因为 PL/pgSQL 现在把所有核心保留字视为保留。", "title": "把 OFF 关键字改为非保留", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "fb638afa08d51adad2d4522a8f04cb174f25475e1f3ffe400e9b77d3c9593e03", "section_path": ["变更"], "commit_groups": [], "identity_text": "Make the OFF keyword unreserved (Heikki Linnakangas) This prevents problems with using off as a variable name in PL/pgSQL. That worked before 9.0, but was now broken because PL/pgSQL now treats all core reserved words as reserved.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/022", "db_id": "bf01afcc484380b917817819eb8b2ef2", "patch_ids": [], "statement_hash": "8da15ab2780abbc524fba973e610b8c68865bdc33848ceb9ef570304f4a9bea8", "relations": [], "version": "9.0.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-55c2ab9a4d310ccc", "cves": [], "html": "<p>修复 <code>COALESCE()</code> 表达式的常量折叠（Tom Lane）</p>\n<p>规划器有时会尝试求值实际上永远不可达的子表达式，可能导致意外错误。</p>", "text": "修复 COALESCE() 表达式的常量折叠（Tom Lane） 规划器有时会尝试求值实际上永远不可达的子表达式，可能导致意外错误。", "title": "修复 COALESCE() 表达式的常量折叠", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "b7b3f9ab327088c648c447b7eaf7c53cdba0d54842c3934ff9fae2fb467d1f0d", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix constant-folding of COALESCE() expressions (Tom Lane) The planner would sometimes attempt to evaluate sub-expressions that in fact could never be reached, possibly leading to unexpected errors.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/023", "db_id": "19a5f59c0b2d17df84f464af7c510ce0", "patch_ids": [], "statement_hash": "f7172c949ec2b612d429e994c53c6e5028c0749aab510cda9f94054d98d8a93b", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-13a15ca79836824f", "cves": [], "html": "<p>修复比较整行 Var 时的 <span>“<span>could not find pathkey item to sort</span>”</span> 规划器失败（Tom Lane）</p>", "text": "修复比较整行 Var 时的 “could not find pathkey item to sort” 规划器失败（Tom Lane）", "title": "修复比较整行 Var 时的 “could not find pathkey item to sort” 规划器失败", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "762cf72a79cf8d0aad9877234301b7d3471cc9dcf33c06ff3e1f921acd29173f", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix could not find pathkey item to sort planner failure with comparison of whole-row Vars (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/024", "db_id": "9d3ca780657b9c9fff78d87ea8cd24e0", "patch_ids": [], "statement_hash": "144266208c1e167a4127aa37fd6ae5f9c659780dd0140810513c0690bd6a8cb9", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-02995bc42a6a1d0b", "cves": [], "html": "<p>修复当连接接受（<code>accept()</code> 或紧随其后的调用之一）失败且 postmaster 编译时带 GSSAPI 支持时的 postmaster 崩溃（Alexander Chernikov）</p>", "text": "修复当连接接受（accept() 或紧随其后的调用之一）失败且 postmaster 编译时带 GSSAPI 支持时的 postmaster 崩溃（Alexander Chernikov）", "title": "修复当连接接受（accept() 或紧随其后的调用之一）失败且 postmaster 编译时带 GSSAPI 支持时的 postmaster 崩溃", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "9f31f4f32665a0d0eb7d51f1f1b62954a3dcad9ebd49fb8bf3698e421eab670f", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix postmaster crash when connection acceptance (accept() or one of the calls made immediately after it) fails, and the postmaster was compiled with GSSAPI support (Alexander Chernikov)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/025", "db_id": "5fe4d9d833ba9d3ac0de7e6abde2f12b", "patch_ids": [], "statement_hash": "f38fd4f7ae5b97110d0f608af6368d139babcb01b0ccbbe393645bb1f78536ab", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-d08deffba426e11f", "cves": [], "html": "<p>在收到来自 RADIUS 认证服务器的无效响应包之后重试（Magnus Hagander）</p>\n<p>这修复了一个低风险的潜在拒绝服务条件。</p>", "text": "在收到来自 RADIUS 认证服务器的无效响应包之后重试（Magnus Hagander） 这修复了一个低风险的潜在拒绝服务条件。", "title": "在收到来自 RADIUS 认证服务器的无效响应包之后重试", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "8f7208c13216568797a725c3ff1f94249763bcf61aea03061fc2029a7e6d2c48", "section_path": ["变更"], "commit_groups": [], "identity_text": "Retry after receiving an invalid response packet from a RADIUS authentication server (Magnus Hagander) This fixes a low-risk potential denial of service condition.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/026", "db_id": "167906d50539c48e1496028d4054d9bc", "patch_ids": [], "statement_hash": "697947151a236aab0e3b710355edee679075a9116d9cbec9cb1e023626c51f67", "relations": [], "version": "9.0.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-1bd8ff2c7c075177", "cves": [], "html": "<p>修复 <code>log_temp_files</code> 处于活动状态时临时文件漏删的问题（Tom Lane）</p>\n<p>如果尝试发出日志消息时出错，就不会执行删除，导致临时文件累积。</p>", "text": "修复 log_temp_files 处于活动状态时临时文件漏删的问题（Tom Lane） 如果尝试发出日志消息时出错，就不会执行删除，导致临时文件累积。", "title": "修复 log_temp_files 处于活动状态时临时文件漏删的问题", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "5f0e9ed711085444061d9adc92e32cfd846d2e74c2d3f90130ec550fd2895c99", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix missed unlink of temporary files when log_temp_files is active (Tom Lane) If an error occurred while attempting to emit the log message, the unlink was not done, resulting in accumulation of temp files.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/027", "db_id": "c1a79ae092b042c6006f2ed4f31f74f2", "patch_ids": [], "statement_hash": "a0ba8683c1146ac50a1cb28715dd053b91a62f2d248b07b50d2f6bca52e0059f", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-9c9eabdfb3058fd6", "cves": [], "html": "<p>为 <code>InhRelation</code> 节点添加打印功能（Tom Lane）</p>\n<p>这避免了启用 <code>debug_print_parse</code> 且执行某些类型的查询时的失败。</p>", "text": "为 InhRelation 节点添加打印功能（Tom Lane） 这避免了启用 debug_print_parse 且执行某些类型的查询时的失败。", "title": "为 InhRelation 节点添加打印功能", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "c572d9774429f11db1b9e107d62d7e18e9560a8fa7914ed8d95f971c7d66fdac", "section_path": ["变更"], "commit_groups": [], "identity_text": "Add print functionality for InhRelation nodes (Tom Lane) This avoids a failure when debug_print_parse is enabled and certain types of query are executed.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/028", "db_id": "47a3a6344571ec63d32c684724fc6f94", "patch_ids": [], "statement_hash": "e790c1ae48cba2d77dbd787d32406230b8b48bb1befd795244ba94af19b71c35", "relations": [], "version": "9.0.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-b2be3357526c36c1", "cves": [], "html": "<p>修复点到水平线段距离的错误计算（Tom Lane）</p>\n<p>该缺陷影响多个不同的几何距离测量操作符。</p>", "text": "修复点到水平线段距离的错误计算（Tom Lane） 该缺陷影响多个不同的几何距离测量操作符。", "title": "修复点到水平线段距离的错误计算", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "2a6b6adbbc610c976788e63e7d7f83d207d1ab722e54c5472eb38f4cd577b726", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix incorrect calculation of distance from a point to a horizontal line segment (Tom Lane) This bug affected several different geometric distance-measurement operators.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/029", "db_id": "3ac449d8aa6f520e348000321722cb3a", "patch_ids": [], "statement_hash": "6f6ceebfa5cd978ecb6b1bf7a0e8f3ca69b425c2ff7708ad0f92fe17c531fbc8", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-674f3a68cfa28c5d", "cves": [], "html": "<p>修复 <span>ecpg</span> 中事务状态的错误计算（Itagaki Takahiro）</p>", "text": "修复 ecpg 中事务状态的错误计算（Itagaki Takahiro）", "title": "修复 ecpg 中事务状态的错误计算", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "0942d2349bc93eb33b2210493aa4f68f22b6f42f54e7dd06fe9bfea0587a2354", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix incorrect calculation of transaction status in ecpg (Itagaki Takahiro)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/030", "db_id": "c748c5fce4507f46d3f760c4d50403de", "patch_ids": [], "statement_hash": "996b9c335473a394cc0a0f3034a6fdf20ed871f1734fc7d53edb4e5dd6db5d1f", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-9c046108556a592c", "cves": [], "html": "<p>修复 <span>psql</span> Unicode 转义支持的错误（Tom Lane）</p>", "text": "修复 psql Unicode 转义支持的错误（Tom Lane）", "title": "修复 psql Unicode 转义支持的错误", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "5dbc701efac7abc7febd3293e377ee8bd574ce0a0630d89b608936dce61d01a5", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix errors in psql's Unicode-escape support (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/031", "db_id": "22833c7d82a87371676c3f18f300cce4", "patch_ids": [], "statement_hash": "84e2ceb7a31f7dd39c00e5e095234a16c627d64001ba60797a271d2659bb5e31", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-624f0a44eedef4ef", "cves": [], "html": "<p>加快归档包含许多大对象（blob）时并行 <span>pg_restore</span> 的速度（Tom Lane）</p>", "text": "加快归档包含许多大对象（blob）时并行 pg_restore 的速度（Tom Lane）", "title": "加快归档包含许多大对象（blob）时并行 pg_restore 的速度", "commits": [], "section": "变更", "category": "performance", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "0fe589f8a8d00efc87bb368c4b5eb07f1bd4d3a7dd4c1004f95c8ed6cc1d67e6", "section_path": ["变更"], "commit_groups": [], "identity_text": "Speed up parallel pg_restore when the archive contains many large objects (blobs) (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/032", "db_id": "024db4086d99949dd4642c42f90786ce", "patch_ids": [], "statement_hash": "044e09c0111839f283d0382cd79c6ee7876738a90414d543197bdbe4053bfe4f", "relations": [], "version": "9.0.2", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-246617500a79099a", "cves": [], "html": "<p>修复 <span>PL/pgSQL</span> 对<span>“<span>简单</span>”</span>表达式的处理，使其在递归或错误恢复情况下不失败（Tom Lane）</p>", "text": "修复 PL/pgSQL 对“简单”表达式的处理，使其在递归或错误恢复情况下不失败（Tom Lane）", "title": "修复 PL/pgSQL 对“简单”表达式的处理，使其在递归或错误恢复情况下不失败", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "de400eca835cb0b7640b31c4f6ef9267b63c47a82e1260dedf783846f672f327", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix PL/pgSQL's handling of simple expressions to not fail in recursion or error-recovery cases (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/033", "db_id": "b70645bb5df4e09eb300b43e99a0cf20", "patch_ids": [], "statement_hash": "b0948e3dd097842d2d563c65ad803bb994ee7265c8d86a31ea0a4d83a9858725", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-127b666450c3440b", "cves": [], "html": "<p>修复 <span>PL/pgSQL</span> 对不存在列情况的错误报告（Tom Lane）</p>\n<p>从 9.0 起，它有时会报 <span>“<span>missing FROM-clause entry for table foo</span>”</span>，而更合适的消息应是 <span>“<span>record foo has no field bar</span>”</span>。</p>", "text": "修复 PL/pgSQL 对不存在列情况的错误报告（Tom Lane） 从 9.0 起，它有时会报 “missing FROM-clause entry for table foo”，而更合适的消息应是 “record foo has no field bar”。", "title": "修复 PL/pgSQL 对不存在列情况的错误报告", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "b8f80c027db2a188a663a22b0d66eed3465b2727081b529db1f8054b52b44a3f", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix PL/pgSQL's error reporting for no-such-column cases (Tom Lane) As of 9.0, it would sometimes report missing FROM-clause entry for table foo when record foo has no field bar would be more appropriate.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/034", "db_id": "79dfe91911f7cc04b3d1df7817f0b82f", "patch_ids": [], "statement_hash": "4f0a70b6cba8dd0717cffcf96c9756edbb0883b6600e2d1d8e9481c6d5aa31e8", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-4e10906f1bce6dce", "cves": [], "html": "<p>修复 <span>PL/Python</span>，使其在给元组字段赋值时遵循 typmod（即长度或精度限制）（Tom Lane）</p>\n<p>这修复了一个自 8.4 以来的退化。</p>", "text": "修复 PL/Python，使其在给元组字段赋值时遵循 typmod（即长度或精度限制）（Tom Lane） 这修复了一个自 8.4 以来的退化。", "title": "修复 PL/Python，使其在给元组字段赋值时遵循 typmod（即长度或精度限制）", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "6acd54442e82b4396126ac38c2ddb0b0ba68bb2a91fc415355c21d98a1e8aec4", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix PL/Python to honor typmod (i.e., length or precision restrictions) when assigning to tuple fields (Tom Lane) This fixes a regression from 8.4.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/035", "db_id": "940c7285b0b58b6eafc3890580fd9cde", "patch_ids": [], "statement_hash": "44df1780f3e5434d8890162babeb2682dbe10b3f126f9b63078d415e28876832", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-9bc074afa1f4698d", "cves": [], "html": "<p>修复 <span>PL/Python</span> 对集合返回函数的处理（Jan Urbanski）</p>\n<p>在生成集合结果的迭代器内尝试调用 SPI 函数会失败。</p>", "text": "修复 PL/Python 对集合返回函数的处理（Jan Urbanski） 在生成集合结果的迭代器内尝试调用 SPI 函数会失败。", "title": "修复 PL/Python 对集合返回函数的处理", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "8a0d765b2892c1185f7b0b46548b5dcac13f5d42353a251a0a6537f0a8a4c7d3", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix PL/Python's handling of set-returning functions (Jan Urbanski) Attempts to call SPI functions within the iterator generating a set result would fail.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/036", "db_id": "4f4534bf92e555ac9ee7c1cdb1261efe", "patch_ids": [], "statement_hash": "67af5f54a4a8faf966937886f1538b427d222d0e8cd459b13b641e84eb3cc563", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-e432fd45b5091786", "cves": [], "html": "<p>修复 <code>contrib/cube</code> 的 GiST picksplit 算法中的缺陷（Alexander Korotkov）</p>\n<p>这可能导致 <code>cube</code> 列上的 GiST 索引相当低效，尽管答案并非真正错误。如果你有这样的索引，考虑在安装此更新后对其执行 <code>REINDEX</code>。</p>", "text": "修复 contrib/cube 的 GiST picksplit 算法中的缺陷（Alexander Korotkov） 这可能导致 cube 列上的 GiST 索引相当低效，尽管答案并非真正错误。如果你有这样的索引，考虑在安装此更新后对其执行 REINDEX。", "title": "修复 contrib/cube 的 GiST picksplit 算法中的缺陷", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "01277a31046f3a23a754d96f08364e38b29cbfaff289274416200b49973659a7", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix bug in contrib/cube's GiST picksplit algorithm (Alexander Korotkov) This could result in considerable inefficiency, though not actually incorrect answers, in a GiST index on a cube column. If you have such an index, consider REINDEXing it after installing this update.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/037", "db_id": "5ef5d921fd7f55e1b51791daf02bf4f2", "patch_ids": [], "statement_hash": "bc660fb86f4fa0965811535dc1569bd34b312f346b97a4d8333e1c365ee2ebbc", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-3c83c8b60190c6bc", "cves": [], "html": "<p><code>contrib/dblink</code> 除了在创建新连接时外不再发出<span>“<span>identifier will be truncated</span>”</span>通知（Itagaki Takahiro）</p>", "text": "contrib/dblink 除了在创建新连接时外不再发出“identifier will be truncated”通知（Itagaki Takahiro）", "title": "contrib/dblink 除了在创建新连接时外不再发出“identifier will be truncated”通知", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "bfabd79526b7d88fb543b8cd34ffa72431061314bf13a934269e487716bdedcb", "section_path": ["变更"], "commit_groups": [], "identity_text": "Don't emit identifier will be truncated notices in contrib/dblink except when creating new connections (Itagaki Takahiro)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/038", "db_id": "7272117f59305991d189bd3609cc1d53", "patch_ids": [], "statement_hash": "445edda4fa2828b449729369718a83ccb0350593ea59aacd603064300c5e37d8", "relations": [], "version": "9.0.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-d51b6dc5b0fe723d", "cves": [], "html": "<p>修复 <code>contrib/pgcrypto</code> 在缺少公钥时可能的核心转储（Marti Raudsepp）</p>", "text": "修复 contrib/pgcrypto 在缺少公钥时可能的核心转储（Marti Raudsepp）", "title": "修复 contrib/pgcrypto 在缺少公钥时可能的核心转储", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "863e785f49f59beebe788b0322b0d2650c7096127f53304ddebb0a592af4659d", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix potential coredump on missing public key in contrib/pgcrypto (Marti Raudsepp)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/039", "db_id": "07bdf6aeba248ef570f398f917c15b28", "patch_ids": [], "statement_hash": "756882c7fbe5916c039abe5f114690a8324a01735db904549f5d5196011d068c", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-7e0ba513c68e7ddb", "cves": [], "html": "<p>修复 <code>contrib/pg_upgrade</code> 中的缓冲区越界（Hernan Gonzalez）</p>", "text": "修复 contrib/pg_upgrade 中的缓冲区越界（Hernan Gonzalez）", "title": "修复 contrib/pg_upgrade 中的缓冲区越界", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "ec245e370820500e2382725c72b871c9c69ca2335a8cadc958956f4564e8ab2e", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix buffer overrun in contrib/pg_upgrade (Hernan Gonzalez)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/040", "db_id": "063dbf6e0bb82cac5ab705d1619ebabf", "patch_ids": [], "statement_hash": "75beccdbe8cf30e0dfa39e7dded0f6e7ebee3bba23482e411d8ef4862449b9e2", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-4b54bd9f578fc555", "cves": [], "html": "<p>修复 <code>contrib/xml2</code> 的 XPath 查询函数中的内存泄漏（Tom Lane）</p>", "text": "修复 contrib/xml2 的 XPath 查询函数中的内存泄漏（Tom Lane）", "title": "修复 contrib/xml2 的 XPath 查询函数中的内存泄漏", "commits": [], "section": "变更", "category": "bugfix", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "8bbe01c6ad65cd69648fabc6e0fae5110ffebe658608d5d204a933ff4aa681ed", "section_path": ["变更"], "commit_groups": [], "identity_text": "Fix memory leak in contrib/xml2's XPath query functions (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/041", "db_id": "f7eb8b87b1e19515d24067c5f3d090c7", "patch_ids": [], "statement_hash": "3a50b6f57453ede69ae1bc731811f73c30c63e2098d0b6836ec911359e065e0f", "relations": [], "version": "9.0.2", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "9.0.2-c27bc3568d715f75", "cves": [], "html": "<p>把时区数据文件更新为 <span>tzdata</span> 版本 2010o for DST law changes in Fiji and Samoa; also historical corrections for Hong Kong。</p>", "text": "把时区数据文件更新为 tzdata 版本 2010o for DST law changes in Fiji and Samoa; also historical corrections for Hong Kong。", "title": "把时区数据文件更新为 tzdata 版本 2010o for DST law changes in Fiji and Samoa; also historical corrections for Hong Kong。", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.0.2/#id-1.11.6.26.5", "source_hash": "b1e03f97ec8ed473d05ad665d6af9a8947f991b96af5ae51c46c0bf04981f81f", "section_path": ["变更"], "commit_groups": [], "identity_text": "Update time zone data files to tzdata release 2010o for DST law changes in Fiji and Samoa; also historical corrections for Hong Kong.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.0.2/changes/042", "db_id": "41aa83ca226f8eefde4a127758ce058a", "patch_ids": [], "statement_hash": "dfb844426c100dee6f520e1152dced660047a990a18732167a24e731cc8bfa9c", "relations": [], "version": "9.0.2", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": []}]}], "stats": [{"key": "all", "label": "全部变更", "count": 42}, {"key": "feature", "label": "新功能", "count": 0}, {"key": "bugfix", "label": "BUG 修复", "count": 26}, {"key": "security", "label": "安全相关", "count": 0}, {"key": "performance", "label": "性能改进", "count": 1}, {"key": "compatibility", "label": "兼容性变化", "count": 0}, {"key": "improvement", "label": "其他改进", "count": 15}], "total": 42, "release_count": 1, "cross_major": false, "cve_count": 0, "cves": [], "cve_available": true, "remaining_cves": [], "security_regressions": [], "warnings": [], "candidate_count": 42, "already_in_source_count": 0, "duplicate_count": 0, "excluded_count": 0, "exclusions": [], "source_as_of": "2026-09-26", "security_as_of": "2026-09-26"}