{"format": 1, "mode": "release", "from_release": null, "to_release": {"date": "2017-08-31", "build": "9.2.23", "major": "9.2", "minor": 23, "manual": "9.2", "status": "stable", "doc_git": "", "version": "9.2.23", "eol_date": "2017-11-09", "date_text": "2017-08-31", "supported": false, "manual_url": "/docs/9.2/release-9-2-23.html", "source_url": "/docs/release/9.2.23/", "entry_count": 6, "placeholder": false, "content_hash": "7533de999aa368eb827614e91a6e7d55adc218d940f1898c42e7bb3ad63bbc4c", "manual_build": "9.2.24", "source_as_of": "", "changes_count": 6, "doc_loaded_at": "2026-09-26T02:56:46.946617", "migration_html": "<p>    对于运行 9.2.X 的用户，不需要进行转储/恢复。</p><p>    不过，如果你是从早于 9.2.22 的版本升级，请参见<a href=\"/docs/9.2/release-9-2-22.html\" title=\"E.3. 版本 9.2.22\">第 E.3 节</a>。</p>", "compatibility_count": 0, "label": "9.2.23", "status_label": "历史版本", "eol": "2017-11-09", "age_days": 3317, "support_days": -3247}, "groups": [{"date": "2017-08-31", "build": "9.2.23", "major": "9.2", "minor": 23, "manual": "9.2", "status": "stable", "doc_git": "", "version": "9.2.23", "eol_date": "2017-11-09", "date_text": "2017-08-31", "supported": false, "manual_url": "/docs/9.2/release-9-2-23.html", "source_url": "/docs/release/9.2.23/", "entry_count": 6, "placeholder": false, "content_hash": "7533de999aa368eb827614e91a6e7d55adc218d940f1898c42e7bb3ad63bbc4c", "manual_build": "9.2.24", "source_as_of": "", "changes_count": 6, "doc_loaded_at": "2026-09-26T02:56:46.946617", "migration_html": "<p>    对于运行 9.2.X 的用户，不需要进行转储/恢复。</p><p>    不过，如果你是从早于 9.2.22 的版本升级，请参见<a href=\"/docs/9.2/release-9-2-22.html\" title=\"E.3. 版本 9.2.22\">第 E.3 节</a>。</p>", "compatibility_count": 0, "label": "9.2.23", "status_label": "历史版本", "eol": "2017-11-09", "age_days": 3317, "support_days": -3247, "entries": [{"id": "9.2.23-a9471aa1dc145ff0", "cves": [], "html": "<p>      在 <code>information_schema</code>.<code>table_privileges</code>\n      视图中显示外部表（Peter Eisentraut）\n     </p><p>      所有其他相关的 <code>information_schema</code> 视图都包含外部表，只有这一个忽略了它们。\n     </p><p>      由于这个视图定义是由 <span>initdb</span> 安装的，仅升级不会修复问题。如果需要在现有安装中修复，可以以超级用户身份在\n      <span>psql</span> 中执行以下操作：</p><pre>SET search_path TO information_schema;\nCREATE OR REPLACE VIEW table_privileges AS\nSELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor,\n       CAST(grantee.rolname AS sql_identifier) AS grantee,\n       CAST(current_database() AS sql_identifier) AS table_catalog,\n       CAST(nc.nspname AS sql_identifier) AS table_schema,\n       CAST(c.relname AS sql_identifier) AS table_name,\n       CAST(c.prtype AS character_data) AS privilege_type,\n       CAST(\n         CASE WHEN\n          -- object owner always has grant options\n          pg_has_role(grantee.oid, c.relowner, 'USAGE')\n          OR c.grantable\n          THEN 'YES' ELSE 'NO' END AS yes_or_no) AS is_grantable,\n       CAST(CASE WHEN c.prtype = 'SELECT' THEN 'YES' ELSE 'NO' END AS yes_or_no) AS with_hierarchy\nFROM (\n       SELECT oid, relname, relnamespace, relkind, relowner,\n              (aclexplode(coalesce(relacl, acldefault('r', relowner))).*\n       FROM pg_class ) AS c (oid, relname, relnamespace, relkind, relowner, grantor, grantee, prtype, grantable),\n     pg_namespace nc, pg_authid u_grantor,\n     (\n       SELECT oid, rolname FROM pg_authid\n       UNION ALL\n       SELECT 0::oid, 'PUBLIC'\n     ) AS grantee (oid, rolname)\nWHERE c.relnamespace = nc.oid\n      AND c.relkind IN ('r', 'v', 'f')\n      AND c.grantee = grantee.oid\n      AND c.grantor = u_grantor.oid\n      AND c.prtype IN ('INSERT', 'SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER')\n      AND (pg_has_role(u_grantor.oid, 'USAGE')\n           OR pg_has_role(grantee.oid, 'USAGE')\n           OR grantee.rolname = 'PUBLIC');</pre><p>\n      这必须在每个要修复的数据库中重复，包括\n      <code>template0</code>。\n     </p>", "text": "在 information_schema.table_privileges 视图中显示外部表（Peter Eisentraut） 所有其他相关的 information_schema 视图都包含外部表，只有这一个忽略了它们。 由于这个视图定义是由 initdb 安装的，仅升级不会修复问题。如果需要在现有安装中修复，可以以超级用户身份在 psql 中执行以下操作： SET search_path TO information_schema; CREATE OR REPLACE VIEW table_privileges AS SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor, CAST(grantee.rolname AS sql_identifier) AS grantee, CAST(current_database() AS sql_identifier) AS table_catalog, CAST(nc.nspname AS sql_identifier) AS table_schema, CAST(c.relname AS sql_identifier) AS table_name, CAST(c.prtype AS character_data) AS privilege_type, CAST( CASE WHEN -- object owner always has grant options pg_has_role(grantee.oid, c.relowner, 'USAGE') OR c.grantable THEN 'YES' ELSE 'NO' END AS yes_or_no) AS is_grantable, CAST(CASE WHEN c.prtype = 'SELECT' THEN 'YES' ELSE 'NO' END AS yes_or_no) AS with_hierarchy FROM ( SELECT oid, relname, relnamespace, relkind, relowner, (aclexplode(coalesce(relacl, acldefault('r', relowner))).* FROM pg_class ) AS c (oid, relname, relnamespace, relkind, relowner, grantor, grantee, prtype, grantable), pg_namespace nc, pg_authid u_grantor, ( SELECT oid, rolname FROM pg_authid UNION ALL SELECT 0::oid, 'PUBLIC' ) AS grantee (oid, rolname) WHERE c.relnamespace = nc.oid AND c.relkind IN ('r', 'v', 'f') AND c.grantee = grantee.oid AND c.grantor = u_grantor.oid AND c.prtype IN ('INSERT', 'SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER') AND (pg_has_role(u_grantor.oid, 'USAGE') OR pg_has_role(grantee.oid, 'USAGE') OR grantee.rolname = 'PUBLIC'); 这必须在每个要修复的数据库中重复，包括 template0。", "title": "在 information_schema.table_privileges 视图中显示外部表", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.2.23/#id-1.11.6.6.6", "source_hash": "7b4030f07a95b428094c6f0b5be395c71c72d2d6d99a7b55a647e035c92239ac", "section_path": ["变更"], "commit_groups": [], "identity_text": "Show foreign tables in information_schema.table_privileges view (Peter Eisentraut) All other relevant information_schema views include foreign tables, but this one ignored them. Since this view definition is installed by initdb, merely upgrading will not fix the problem. If you need to fix this in an existing installation, you can, as a superuser, do this in psql: SET search_path TO information_schema; CREATE OR REPLACE VIEW table_privileges AS SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor, CAST(grantee.rolname AS sql_identifier) AS grantee, CAST(current_database() AS sql_identifier) AS table_catalog, CAST(nc.nspname AS sql_identifier) AS table_schema, CAST(c.relname AS sql_identifier) AS table_name, CAST(c.prtype AS character_data) AS privilege_type, CAST( CASE WHEN -- object owner always has grant options pg_has_role(grantee.oid, c.relowner, 'USAGE') OR c.grantable THEN 'YES' ELSE 'NO' END AS yes_or_no) AS is_grantable, CAST(CASE WHEN c.prtype = 'SELECT' THEN 'YES' ELSE 'NO' END AS yes_or_no) AS with_hierarchy FROM ( SELECT oid, relname, relnamespace, relkind, relowner, (aclexplode(coalesce(relacl, acldefault('r', relowner)))).* FROM pg_class ) AS c (oid, relname, relnamespace, relkind, relowner, grantor, grantee, prtype, grantable), pg_namespace nc, pg_authid u_grantor, ( SELECT oid, rolname FROM pg_authid UNION ALL SELECT 0::oid, 'PUBLIC' ) AS grantee (oid, rolname) WHERE c.relnamespace = nc.oid AND c.relkind IN ('r', 'v', 'f') AND c.grantee = grantee.oid AND c.grantor = u_grantor.oid AND c.prtype IN ('INSERT', 'SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER') AND (pg_has_role(u_grantor.oid, 'USAGE') OR pg_has_role(grantee.oid, 'USAGE') OR grantee.rolname = 'PUBLIC'); This must be repeated in each database to be fixed, including template0.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.2.23/changes/001", "db_id": "3f82faaf4eff73a2042216d4eac21a2c", "patch_ids": [], "statement_hash": "4c87ab45b537024d4b3d1e310579afba2648f3fcca11e82e3fd65eabe60da1cd", "relations": [{"rule": 2, "type": "equivalent", "target": "10a4b1a21748add5cdc22ac4594174dc", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4c87ab45b537024d4b3d1e310579afba2648f3fcca11e82e3fd65eabe60da1cd"}}, {"rule": 2, "type": "equivalent", "target": "41e90977ae153a8484b1cdec9c094b9d", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4c87ab45b537024d4b3d1e310579afba2648f3fcca11e82e3fd65eabe60da1cd"}}, {"rule": 2, "type": "equivalent", "target": "6490008c6b679a796619737abb260ab9", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4c87ab45b537024d4b3d1e310579afba2648f3fcca11e82e3fd65eabe60da1cd"}}, {"rule": 2, "type": "equivalent", "target": "df32761f4e98b569ae3c4a9354183c85", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4c87ab45b537024d4b3d1e310579afba2648f3fcca11e82e3fd65eabe60da1cd"}}], "version": "9.2.23", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "df32761f4e98b569ae3c4a9354183c85", "kind": "equivalent", "version": "9.6.5", "label": "9.6.5", "title": "在 information_schema.table_privileges 视图中显示外部表", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4c87ab45b537024d4b3d1e310579afba2648f3fcca11e82e3fd65eabe60da1cd"}, "url": "/docs/compare/?release=9.6.5#9.6.5-a9471aa1dc145ff0", "source_url": "/docs/release/9.6.5/#id-1.11.6.24.5"}, {"db_id": "41e90977ae153a8484b1cdec9c094b9d", "kind": "equivalent", "version": "9.5.9", "label": "9.5.9", "title": "在 information_schema.table_privileges 视图中显示外部表", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4c87ab45b537024d4b3d1e310579afba2648f3fcca11e82e3fd65eabe60da1cd"}, "url": "/docs/compare/?release=9.5.9#9.5.9-a9471aa1dc145ff0", "source_url": "/docs/release/9.5.9/#id-1.11.6.21.5"}, {"db_id": "10a4b1a21748add5cdc22ac4594174dc", "kind": "equivalent", "version": "9.4.14", "label": "9.4.14", "title": "在 information_schema.table_privileges 视图中显示外部表", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4c87ab45b537024d4b3d1e310579afba2648f3fcca11e82e3fd65eabe60da1cd"}, "url": "/docs/compare/?release=9.4.14#9.4.14-a9471aa1dc145ff0", "source_url": "/docs/release/9.4.14/#id-1.11.6.17.5"}, {"db_id": "6490008c6b679a796619737abb260ab9", "kind": "equivalent", "version": "9.3.19", "label": "9.3.19", "title": "在 information_schema.table_privileges 视图中显示外部表", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "4c87ab45b537024d4b3d1e310579afba2648f3fcca11e82e3fd65eabe60da1cd"}, "url": "/docs/compare/?release=9.3.19#9.3.19-a9471aa1dc145ff0", "source_url": "/docs/release/9.3.19/#id-1.11.6.11.5"}]}, {"id": "9.2.23-2c80f774f076c8fd", "cves": [], "html": "<p>      清理尝试对失败事务执行 <code>ROLLBACK</code> 时发生致命退出（例如因收到 <span>SIGTERM</span>）的处理（Tom Lane）\n     </p><p>      这种情况可能导致断言失败。在生产构建中退出仍会发生，但会记录一条关于<span>“<span>cannot drop active portal</span>”</span>的意外消息。\n     </p>", "text": "清理尝试对失败事务执行 ROLLBACK 时发生致命退出（例如因收到 SIGTERM）的处理（Tom Lane） 这种情况可能导致断言失败。在生产构建中退出仍会发生，但会记录一条关于“cannot drop active portal”的意外消息。", "title": "清理尝试对失败事务执行 ROLLBACK 时发生致命退出（例如因收到 SIGTERM）的处理", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.2.23/#id-1.11.6.6.6", "source_hash": "d5df774b4eb63945a519484f4385c5de6b26a57ae89d9ec60c00acfad673444c", "section_path": ["变更"], "commit_groups": [], "identity_text": "Clean up handling of a fatal exit (e.g., due to receipt of SIGTERM) that occurs while trying to execute a ROLLBACK of a failed transaction (Tom Lane) This situation could result in an assertion failure. In production builds, the exit would still occur, but it would log an unexpected message about cannot drop active portal.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.2.23/changes/002", "db_id": "f9959ffe6fe7709a79e620b35064a27d", "patch_ids": [], "statement_hash": "e4594aaac71679b501975fc7f1c808003de70a354e08f6f55548a466442e25c3", "relations": [{"rule": 2, "type": "equivalent", "target": "0dae3f449dfb816df1df5fde5f526d0f", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e4594aaac71679b501975fc7f1c808003de70a354e08f6f55548a466442e25c3"}}, {"rule": 2, "type": "equivalent", "target": "ae36cc2c0a2f6aa05a29af6344b41317", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e4594aaac71679b501975fc7f1c808003de70a354e08f6f55548a466442e25c3"}}, {"rule": 2, "type": "equivalent", "target": "b72e2b8199e9f5e2f2549b1725d05d0b", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e4594aaac71679b501975fc7f1c808003de70a354e08f6f55548a466442e25c3"}}, {"rule": 2, "type": "equivalent", "target": "ec8e803c943e0b1082d3dd91507845c3", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e4594aaac71679b501975fc7f1c808003de70a354e08f6f55548a466442e25c3"}}], "version": "9.2.23", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "ec8e803c943e0b1082d3dd91507845c3", "kind": "equivalent", "version": "9.6.5", "label": "9.6.5", "title": "清理尝试对失败事务执行 ROLLBACK 时发生致命退出（例如因收到 SIGTERM）的处理", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e4594aaac71679b501975fc7f1c808003de70a354e08f6f55548a466442e25c3"}, "url": "/docs/compare/?release=9.6.5#9.6.5-2c80f774f076c8fd", "source_url": "/docs/release/9.6.5/#id-1.11.6.24.5"}, {"db_id": "ae36cc2c0a2f6aa05a29af6344b41317", "kind": "equivalent", "version": "9.5.9", "label": "9.5.9", "title": "清理尝试对失败事务执行 ROLLBACK 时发生致命退出（例如因收到 SIGTERM）的处理", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e4594aaac71679b501975fc7f1c808003de70a354e08f6f55548a466442e25c3"}, "url": "/docs/compare/?release=9.5.9#9.5.9-2c80f774f076c8fd", "source_url": "/docs/release/9.5.9/#id-1.11.6.21.5"}, {"db_id": "b72e2b8199e9f5e2f2549b1725d05d0b", "kind": "equivalent", "version": "9.4.14", "label": "9.4.14", "title": "清理尝试对失败事务执行 ROLLBACK 时发生致命退出（例如因收到 SIGTERM）的处理", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e4594aaac71679b501975fc7f1c808003de70a354e08f6f55548a466442e25c3"}, "url": "/docs/compare/?release=9.4.14#9.4.14-2c80f774f076c8fd", "source_url": "/docs/release/9.4.14/#id-1.11.6.17.5"}, {"db_id": "0dae3f449dfb816df1df5fde5f526d0f", "kind": "equivalent", "version": "9.3.19", "label": "9.3.19", "title": "清理尝试对失败事务执行 ROLLBACK 时发生致命退出（例如因收到 SIGTERM）的处理", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "e4594aaac71679b501975fc7f1c808003de70a354e08f6f55548a466442e25c3"}, "url": "/docs/compare/?release=9.3.19#9.3.19-2c80f774f076c8fd", "source_url": "/docs/release/9.3.19/#id-1.11.6.11.5"}]}, {"id": "9.2.23-b5e135b3d4add397", "cves": [], "html": "<p>      移除致命退出期间可能触发的断言（Tom Lane）\n     </p>", "text": "移除致命退出期间可能触发的断言（Tom Lane）", "title": "移除致命退出期间可能触发的断言", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.2.23/#id-1.11.6.6.6", "source_hash": "b70358ccba805aaad92a8acf418fca513f7bdd15dbe6e6b12e115de8102e95d1", "section_path": ["变更"], "commit_groups": [], "identity_text": "Remove assertion that could trigger during a fatal exit (Tom Lane)", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.2.23/changes/003", "db_id": "2cdb4a28a33a0e8815255ea6e190bbd9", "patch_ids": [], "statement_hash": "8f2814680778d3967a405fba989a851253ca0d3c721fa7bfff0f245c9c2d9746", "relations": [{"rule": 2, "type": "equivalent", "target": "5cd648610ff81e672a3935e98852c494", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "8f2814680778d3967a405fba989a851253ca0d3c721fa7bfff0f245c9c2d9746"}}, {"rule": 2, "type": "equivalent", "target": "84ef0ccd288d161ff09bbdcb5dffb3aa", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "8f2814680778d3967a405fba989a851253ca0d3c721fa7bfff0f245c9c2d9746"}}, {"rule": 2, "type": "equivalent", "target": "88259e18f9ffa0f282e9828e4a46b4a0", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "8f2814680778d3967a405fba989a851253ca0d3c721fa7bfff0f245c9c2d9746"}}, {"rule": 2, "type": "equivalent", "target": "b49d786050cef1b1d115cc3aa5cd1454", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "8f2814680778d3967a405fba989a851253ca0d3c721fa7bfff0f245c9c2d9746"}}], "version": "9.2.23", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "88259e18f9ffa0f282e9828e4a46b4a0", "kind": "equivalent", "version": "9.6.5", "label": "9.6.5", "title": "移除致命退出期间可能触发的断言", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "8f2814680778d3967a405fba989a851253ca0d3c721fa7bfff0f245c9c2d9746"}, "url": "/docs/compare/?release=9.6.5#9.6.5-b5e135b3d4add397", "source_url": "/docs/release/9.6.5/#id-1.11.6.24.5"}, {"db_id": "b49d786050cef1b1d115cc3aa5cd1454", "kind": "equivalent", "version": "9.5.9", "label": "9.5.9", "title": "移除致命退出期间可能触发的断言", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "8f2814680778d3967a405fba989a851253ca0d3c721fa7bfff0f245c9c2d9746"}, "url": "/docs/compare/?release=9.5.9#9.5.9-b5e135b3d4add397", "source_url": "/docs/release/9.5.9/#id-1.11.6.21.5"}, {"db_id": "84ef0ccd288d161ff09bbdcb5dffb3aa", "kind": "equivalent", "version": "9.4.14", "label": "9.4.14", "title": "移除在致命退出期间可能触发的断言", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "8f2814680778d3967a405fba989a851253ca0d3c721fa7bfff0f245c9c2d9746"}, "url": "/docs/compare/?release=9.4.14#9.4.14-b12d68766d941918", "source_url": "/docs/release/9.4.14/#id-1.11.6.17.5"}, {"db_id": "5cd648610ff81e672a3935e98852c494", "kind": "equivalent", "version": "9.3.19", "label": "9.3.19", "title": "移除致命退出期间可能触发的断言", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "8f2814680778d3967a405fba989a851253ca0d3c721fa7bfff0f245c9c2d9746"}, "url": "/docs/compare/?release=9.3.19#9.3.19-b5e135b3d4add397", "source_url": "/docs/release/9.3.19/#id-1.11.6.11.5"}]}, {"id": "9.2.23-8a8b1213bb73a969", "cves": [], "html": "<p>      正确识别范围类型或基于被搜索复合类型或域类型的域类型之上的列（Tom Lane）\n     </p><p>      某些更改复合类型或域类型定义的 <code>ALTER</code> 命令本应在该类型有存储值时失败，因为它们缺少更新或检查这类值所需的基础设施。此前这些检查可能遗漏包裹在范围类型或子域中的相关值，可能允许数据度变得不一致。\n     </p>", "text": "正确识别范围类型或基于被搜索复合类型或域类型的域类型之上的列（Tom Lane） 某些更改复合类型或域类型定义的 ALTER 命令本应在该类型有存储值时失败，因为它们缺少更新或检查这类值所需的基础设施。此前这些检查可能遗漏包裹在范围类型或子域中的相关值，可能允许数据度变得不一致。", "title": "正确识别范围类型或基于被搜索复合类型或域类型的域类型之上的列", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.2.23/#id-1.11.6.6.6", "source_hash": "68cb04192ccd10ed71b705479def628535e76cb647a7ab57223e684259620f52", "section_path": ["变更"], "commit_groups": [], "identity_text": "Correctly identify columns that are of a range type or domain type over a composite type or domain type being searched for (Tom Lane) Certain ALTER commands that change the definition of a composite type or domain type are supposed to fail if there are any stored values of that type in the database, because they lack the infrastructure needed to update or check such values. Previously, these checks could miss relevant values that are wrapped inside range types or sub-domains, possibly allowing the database to become inconsistent.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.2.23/changes/004", "db_id": "e9c971ac5fd2b5a201825b0c71b7aa87", "patch_ids": [], "statement_hash": "22e2f6a4812902a9e32a44a44d506e995de06e135bcd9639b6358ad3115c2761", "relations": [{"rule": 2, "type": "equivalent", "target": "71abe7ea8efc33852b4ca5c481f21278", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "22e2f6a4812902a9e32a44a44d506e995de06e135bcd9639b6358ad3115c2761"}}, {"rule": 2, "type": "equivalent", "target": "73b62edc7cc658789a1495105b92e2ad", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "22e2f6a4812902a9e32a44a44d506e995de06e135bcd9639b6358ad3115c2761"}}, {"rule": 2, "type": "equivalent", "target": "74a0658a15a01d0c31a8ba50bc811e75", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "22e2f6a4812902a9e32a44a44d506e995de06e135bcd9639b6358ad3115c2761"}}, {"rule": 2, "type": "equivalent", "target": "7bf0fd5e8efbe5ef59a9cb0f0755f90c", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "22e2f6a4812902a9e32a44a44d506e995de06e135bcd9639b6358ad3115c2761"}}], "version": "9.2.23", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "7bf0fd5e8efbe5ef59a9cb0f0755f90c", "kind": "equivalent", "version": "9.6.5", "label": "9.6.5", "title": "正确识别范围类型或基于被搜索复合类型或域类型的域类型之上的列", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "22e2f6a4812902a9e32a44a44d506e995de06e135bcd9639b6358ad3115c2761"}, "url": "/docs/compare/?release=9.6.5#9.6.5-8a8b1213bb73a969", "source_url": "/docs/release/9.6.5/#id-1.11.6.24.5"}, {"db_id": "73b62edc7cc658789a1495105b92e2ad", "kind": "equivalent", "version": "9.5.9", "label": "9.5.9", "title": "正确识别范围类型或基于被搜索复合类型或域类型的域类型之上的列", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "22e2f6a4812902a9e32a44a44d506e995de06e135bcd9639b6358ad3115c2761"}, "url": "/docs/compare/?release=9.5.9#9.5.9-8a8b1213bb73a969", "source_url": "/docs/release/9.5.9/#id-1.11.6.21.5"}, {"db_id": "74a0658a15a01d0c31a8ba50bc811e75", "kind": "equivalent", "version": "9.4.14", "label": "9.4.14", "title": "正确识别范围类型或基于被搜索复合类型或域类型的域类型之上的列", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "22e2f6a4812902a9e32a44a44d506e995de06e135bcd9639b6358ad3115c2761"}, "url": "/docs/compare/?release=9.4.14#9.4.14-8a8b1213bb73a969", "source_url": "/docs/release/9.4.14/#id-1.11.6.17.5"}, {"db_id": "71abe7ea8efc33852b4ca5c481f21278", "kind": "equivalent", "version": "9.3.19", "label": "9.3.19", "title": "正确识别范围类型或基于被搜索复合类型或域类型的域类型之上的列", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "22e2f6a4812902a9e32a44a44d506e995de06e135bcd9639b6358ad3115c2761"}, "url": "/docs/compare/?release=9.3.19#9.3.19-8a8b1213bb73a969", "source_url": "/docs/release/9.3.19/#id-1.11.6.11.5"}]}, {"id": "9.2.23-a2c9ce6a936c154a", "cves": [], "html": "<p>      更改 <span>ecpg</span> 的解析器允许不带 C 变量的\n      <code>RETURNING</code> 子句（Michael Meskes）\n     </p><p>      这允许 <span>ecpg</span> 程序包含在内部使用\n      <code>RETURNING</code>（例如在 CTE 内）而不是用它定义返回给客户端的值的 SQL 构造。\n     </p>", "text": "更改 ecpg 的解析器允许不带 C 变量的 RETURNING 子句（Michael Meskes） 这允许 ecpg 程序包含在内部使用 RETURNING（例如在 CTE 内）而不是用它定义返回给客户端的值的 SQL 构造。", "title": "更改 ecpg 的解析器允许不带 C 变量的 RETURNING 子句", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.2.23/#id-1.11.6.6.6", "source_hash": "9038445fd611f6a759ecdf14589ab9dd055e382b685bba52f3852dfff93584c0", "section_path": ["变更"], "commit_groups": [], "identity_text": "Change ecpg's parser to allow RETURNING clauses without attached C variables (Michael Meskes) This allows ecpg programs to contain SQL constructs that use RETURNING internally (for example, inside a CTE) rather than using it to define values to be returned to the client.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.2.23/changes/005", "db_id": "1c903c2b45dfeb3c4c69edb715182ffc", "patch_ids": [], "statement_hash": "d6b9a4381c773a279650ba5e7db5fc20d012a093f7442a05e6843358d98fa348", "relations": [{"rule": 2, "type": "equivalent", "target": "397743f1137bc45382759daafaf3e467", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d6b9a4381c773a279650ba5e7db5fc20d012a093f7442a05e6843358d98fa348"}}, {"rule": 2, "type": "equivalent", "target": "8b053a8e0c87c6b9951b5c4833080e89", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d6b9a4381c773a279650ba5e7db5fc20d012a093f7442a05e6843358d98fa348"}}, {"rule": 2, "type": "equivalent", "target": "cff3c4860563f6b8bc8a0dd39b1e7d98", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d6b9a4381c773a279650ba5e7db5fc20d012a093f7442a05e6843358d98fa348"}}, {"rule": 2, "type": "equivalent", "target": "dcfd6b1086dc12dab1f710cc7cc1e6cf", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d6b9a4381c773a279650ba5e7db5fc20d012a093f7442a05e6843358d98fa348"}}], "version": "9.2.23", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "cff3c4860563f6b8bc8a0dd39b1e7d98", "kind": "equivalent", "version": "9.6.5", "label": "9.6.5", "title": "更改 ecpg 的解析器允许不带 C 变量的 RETURNING 子句", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d6b9a4381c773a279650ba5e7db5fc20d012a093f7442a05e6843358d98fa348"}, "url": "/docs/compare/?release=9.6.5#9.6.5-a2c9ce6a936c154a", "source_url": "/docs/release/9.6.5/#id-1.11.6.24.5"}, {"db_id": "dcfd6b1086dc12dab1f710cc7cc1e6cf", "kind": "equivalent", "version": "9.5.9", "label": "9.5.9", "title": "更改 ecpg 的解析器允许不带 C 变量的 RETURNING 子句", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d6b9a4381c773a279650ba5e7db5fc20d012a093f7442a05e6843358d98fa348"}, "url": "/docs/compare/?release=9.5.9#9.5.9-a2c9ce6a936c154a", "source_url": "/docs/release/9.5.9/#id-1.11.6.21.5"}, {"db_id": "8b053a8e0c87c6b9951b5c4833080e89", "kind": "equivalent", "version": "9.4.14", "label": "9.4.14", "title": "更改 ecpg 的解析器允许不带 C 变量的 RETURNING 子句", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d6b9a4381c773a279650ba5e7db5fc20d012a093f7442a05e6843358d98fa348"}, "url": "/docs/compare/?release=9.4.14#9.4.14-a2c9ce6a936c154a", "source_url": "/docs/release/9.4.14/#id-1.11.6.17.5"}, {"db_id": "397743f1137bc45382759daafaf3e467", "kind": "equivalent", "version": "9.3.19", "label": "9.3.19", "title": "更改 ecpg 的解析器允许不带 C 变量的 RETURNING 子句", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "d6b9a4381c773a279650ba5e7db5fc20d012a093f7442a05e6843358d98fa348"}, "url": "/docs/compare/?release=9.3.19#9.3.19-a2c9ce6a936c154a", "source_url": "/docs/release/9.3.19/#id-1.11.6.11.5"}]}, {"id": "9.2.23-59c8a1aebc0aeb07", "cves": [], "html": "<p>      改进 Windows 上 PL/Perl 编译器标志的选择（Tom Lane）\n     </p><p>      此修复避免了因对 <code>time_t</code> 值宽度的假定不一致而可能的\n      PL/Perl 崩溃。扩展开发者可能看到的一个副作用是\n      <code>_USE_32BIT_TIME_T</code> 不再在\n      <span>PostgreSQL</span> Windows 构建中全局定义。这预计不会引起问题，因为 <code>time_t</code> 类型没有用于任何\n      <span>PostgreSQL</span> API 定义。\n     </p>", "text": "改进 Windows 上 PL/Perl 编译器标志的选择（Tom Lane） 此修复避免了因对 time_t 值宽度的假定不一致而可能的 PL/Perl 崩溃。扩展开发者可能看到的一个副作用是 _USE_32BIT_TIME_T 不再在 PostgreSQL Windows 构建中全局定义。这预计不会引起问题，因为 time_t 类型没有用于任何 PostgreSQL API 定义。", "title": "改进 Windows 上 PL/Perl 编译器标志的选择", "commits": [], "section": "变更", "category": "improvement", "source_url": "/docs/release/9.2.23/#id-1.11.6.6.6", "source_hash": "5522284459af55ecc5bd039bfa2c5bffca555438b4b966714cfd04cf34cb26c5", "section_path": ["变更"], "commit_groups": [], "identity_text": "Improve selection of compiler flags for PL/Perl on Windows (Tom Lane) This fix avoids possible crashes of PL/Perl due to inconsistent assumptions about the width of time_t values. A side-effect that may be visible to extension developers is that _USE_32BIT_TIME_T is no longer defined globally in PostgreSQL Windows builds. This is not expected to cause problems, because type time_t is not used in any PostgreSQL API definitions.", "commit_aliases": [], "source_commits": [], "source_entry_id": "9.2.23/changes/006", "db_id": "f490072174f6dab4a7f5d5d01709bc8c", "patch_ids": [], "statement_hash": "59dc800097c8d118dc36d0f41fc2de69995f5298e698406c8c044ec4ab49dc66", "relations": [{"rule": 2, "type": "equivalent", "target": "174ebed95fdf320d91b3db9f71a9265a", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "59dc800097c8d118dc36d0f41fc2de69995f5298e698406c8c044ec4ab49dc66"}}, {"rule": 2, "type": "equivalent", "target": "a8ad0fb10f04704616588a82af98dbff", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "59dc800097c8d118dc36d0f41fc2de69995f5298e698406c8c044ec4ab49dc66"}}, {"rule": 2, "type": "equivalent", "target": "fc4dc1c8fda86f29580edb9411bbad9a", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "59dc800097c8d118dc36d0f41fc2de69995f5298e698406c8c044ec4ab49dc66"}}, {"rule": 2, "type": "equivalent", "target": "ff5f500a1e1a883ae5db2f02f35c34a3", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "59dc800097c8d118dc36d0f41fc2de69995f5298e698406c8c044ec4ab49dc66"}}], "version": "9.2.23", "category_label": "其他改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "174ebed95fdf320d91b3db9f71a9265a", "kind": "equivalent", "version": "9.6.5", "label": "9.6.5", "title": "改进 Windows 上 PL/Perl 编译器标志的选择", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "59dc800097c8d118dc36d0f41fc2de69995f5298e698406c8c044ec4ab49dc66"}, "url": "/docs/compare/?release=9.6.5#9.6.5-59c8a1aebc0aeb07", "source_url": "/docs/release/9.6.5/#id-1.11.6.24.5"}, {"db_id": "ff5f500a1e1a883ae5db2f02f35c34a3", "kind": "equivalent", "version": "9.5.9", "label": "9.5.9", "title": "改进 Windows 上 PL/Perl 编译器标志的选择", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "59dc800097c8d118dc36d0f41fc2de69995f5298e698406c8c044ec4ab49dc66"}, "url": "/docs/compare/?release=9.5.9#9.5.9-59c8a1aebc0aeb07", "source_url": "/docs/release/9.5.9/#id-1.11.6.21.5"}, {"db_id": "fc4dc1c8fda86f29580edb9411bbad9a", "kind": "equivalent", "version": "9.4.14", "label": "9.4.14", "title": "改进 Windows 上 PL/Perl 编译器标志的选择", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "59dc800097c8d118dc36d0f41fc2de69995f5298e698406c8c044ec4ab49dc66"}, "url": "/docs/compare/?release=9.4.14#9.4.14-59c8a1aebc0aeb07", "source_url": "/docs/release/9.4.14/#id-1.11.6.17.5"}, {"db_id": "a8ad0fb10f04704616588a82af98dbff", "kind": "equivalent", "version": "9.3.19", "label": "9.3.19", "title": "改进 Windows 上 PL/Perl 编译器标志的选择", "evidence": {"same_day": true, "patch_ids": [], "statement_hash": "59dc800097c8d118dc36d0f41fc2de69995f5298e698406c8c044ec4ab49dc66"}, "url": "/docs/compare/?release=9.3.19#9.3.19-59c8a1aebc0aeb07", "source_url": "/docs/release/9.3.19/#id-1.11.6.11.5"}]}]}], "stats": [{"key": "all", "label": "全部变更", "count": 6}, {"key": "feature", "label": "新功能", "count": 0}, {"key": "bugfix", "label": "BUG 修复", "count": 0}, {"key": "security", "label": "安全相关", "count": 0}, {"key": "performance", "label": "性能改进", "count": 0}, {"key": "compatibility", "label": "兼容性变化", "count": 0}, {"key": "improvement", "label": "其他改进", "count": 6}], "total": 6, "release_count": 1, "cross_major": false, "cve_count": 0, "cves": [], "cve_available": true, "remaining_cves": [], "security_regressions": [], "warnings": [], "candidate_count": 6, "already_in_source_count": 0, "duplicate_count": 0, "excluded_count": 0, "exclusions": [], "source_as_of": "2026-09-26", "security_as_of": "2026-09-26"}