{"already_in_source_count":0,"candidate_count":198,"cross_major":false,"cve_available":true,"cve_count":0,"cves":[],"duplicate_count":0,"excluded_count":0,"exclusions":[],"from_release":null,"groups":[{"build":"19beta4","changes_count":181,"compatibility_count":17,"content_hash":"5ae71d02d668ade7b2e0da1d55a8cba30fb8024afa72fa205822bdc3180d725b","date":"","date_text":"2026-??-??，截至 2026-09-14","doc_git":"","doc_loaded_at":"2026-09-26T02:56:33.522705","entries":[{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":["1d92e0c2c"],"commit_groups":[["1d92e0c2c"]],"commits":["1d92e0c2c"],"cves":[],"db_id":"0ee1d9c8286e1e1c3bca823c4ad8e489","html":"\u003cp\u003e新增服务器变量 \u003ca href=\"/docs/19/runtime-config-connection.html#GUC-PASSWORD-EXPIRATION-WARNING-THRESHOLD\"\u003e\u003ccode\u003epassword_expiration_warning_threshold\u003c/code\u003e\u003c/a\u003e，用于提示密码即将过期（Gilles Darold，Nathan Bossart）\u003ca href=\"https://postgr.es/c/1d92e0c2c\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e默认警告期为七天。\u003c/p\u003e","id":"19.0-c33e9c850ed0c4c0","identity_text":"Add server variable password_expiration_warning_threshold to warn about password expiration (Gilles Darold, Nathan Bossart) The default warning period is seven days.","part":"migration","patch_ids":["095ffa220dd9def37aacae10519edc44"],"related_changes":[],"relations":[],"section":"兼容性","section_path":["兼容性"],"source_commits":["1d92e0c2c"],"source_entry_id":"19.0/migration/001","source_hash":"7c339ee9b358a11a561d28ca346ffcac404600694f6da2b380ae9bb7cd6af403","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","statement_hash":"ed4b6567c72fb14f34d3ff078e46845e06ac97abc4729230f6ded8d82025c9a1","text":"新增服务器变量 password_expiration_warning_threshold，用于提示密码即将过期（Gilles Darold，Nathan Bossart）§ 默认警告期为七天。","title":"新增服务器变量 password_expiration_warning_threshold，用于提示密码即将过期","variants":[],"version":"19.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":["bc60ee860"],"commit_groups":[["bc60ee860"]],"commits":["bc60ee860"],"cves":[],"db_id":"0df2f58e5c4562435db359e9744c01ef","html":"\u003cp\u003e在成功完成 MD5 密码认证后发出警告（Nathan Bossart）\u003ca href=\"https://postgr.es/c/bc60ee860\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e可以通过服务器变量 \u003ca href=\"/docs/19/runtime-config-connection.html#GUC-MD5-PASSWORD-WARNINGS\"\u003e\u003ccode\u003emd5_password_warnings\u003c/code\u003e\u003c/a\u003e 禁用该警告。MD5 密码已在 \u003cspan\u003ePostgreSQL\u003c/span\u003e 18 中被标记为弃用。\u003c/p\u003e","id":"19.0-4ae2c09be676b418","identity_text":"Issue a warning after successful MD5 password authentication (Nathan Bossart) The warning can be disabled via server variable md5_password_warnings. MD5 passwords were marked as deprecated in PostgreSQL 18.","part":"migration","patch_ids":["267b13bdefd84f24147ca4222f8da5df"],"related_changes":[],"relations":[],"section":"兼容性","section_path":["兼容性"],"source_commits":["bc60ee860"],"source_entry_id":"19.0/migration/002","source_hash":"60ee25c9ca51965424a96f772be18ed1f7e232d038ccecdab33d99841f5ca2ac","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","statement_hash":"1c58a524004805cb3f88bc6eb135171feb7d551a6e610c6e4172bcb2cdd09ffd","text":"在成功完成 MD5 密码认证后发出警告（Nathan Bossart）§ 可以通过服务器变量 md5_password_warnings 禁用该警告。MD5 密码已在 PostgreSQL 18 中被标记为弃用。","title":"在成功完成 MD5 密码认证后发出警告","variants":[],"version":"19.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":["a1643d40b"],"commit_groups":[["a1643d40b"]],"commits":["a1643d40b"],"cves":[],"db_id":"46f63ce5de5d054a9ff5ef111cb12f89","html":"\u003cp\u003e移除 \u003cacronym\u003eRADIUS\u003c/acronym\u003e 支持（Thomas Munro）\u003ca href=\"https://postgr.es/c/a1643d40b\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cspan\u003ePostgreSQL\u003c/span\u003e 只支持通过 \u003cacronym\u003eUDP\u003c/acronym\u003e 的 \u003cacronym\u003eRADIUS\u003c/acronym\u003e，而这存在无法修复的安全问题。\u003c/p\u003e","id":"19.0-22c41cab584065b7","identity_text":"Remove RADIUS support (Thomas Munro) PostgreSQL only supported RADIUS over UDP, which is unfixably insecure.","part":"migration","patch_ids":["fa7631c26a75fe98210f67a23a547046"],"related_changes":[],"relations":[],"section":"兼容性","section_path":["兼容性"],"source_commits":["a1643d40b"],"source_entry_id":"19.0/migration/003","source_hash":"b6868a5d55a4fbb9bf73a4ae19630c1778ac28754527bdd8b67b584d64f02e99","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","statement_hash":"bb5a1ec62f0b8029c0c2d01824ad69a33b4621e98c08fea042bb2990d855978d","text":"移除 RADIUS 支持（Thomas Munro）§ PostgreSQL 只支持通过 UDP 的 RADIUS，而这存在无法修复的安全问题。","title":"移除 RADIUS 支持","variants":[],"version":"19.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":["457620845"],"commit_groups":[["457620845"]],"commits":["457620845"],"cves":[],"db_id":"5f25dd2107e85b9059d37535d1950ec9","html":"\u003cp\u003e强制数据库服务器中的 \u003ca href=\"/docs/19/runtime-config-compatible.html#GUC-STANDARD-CONFORMING-STRINGS\"\u003e\u003ccode\u003estandard_conforming_strings\u003c/code\u003e\u003c/a\u003e 始终为 \u003ccode\u003eon\u003c/code\u003e（Tom Lane）\u003ca href=\"https://postgr.es/c/457620845\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e使用 \u003cspan\u003ePostgreSQL\u003c/span\u003e 19 之前版本的\u003ca href=\"/docs/19/app-pgdump.html\" title=\"pg_dump\"\u003e\u003cspan\u003epg_dump\u003c/span\u003e\u003c/a\u003e或\u003ca href=\"/docs/19/app-pg-dumpall.html\" title=\"pg_dumpall\"\u003e\u003cspan\u003epg_dumpall\u003c/span\u003e\u003c/a\u003e创建、且使用了 \u003ccode\u003estandard_conforming_strings = off\u003c/code\u003e 的转储，将无法正确载入 \u003cspan\u003ePostgreSQL\u003c/span\u003e 19 及更高版本的服务器。用户应使用这些应用程序的 \u003cspan\u003ePostgreSQL\u003c/span\u003e 19 或更高版本创建转储，或者使用 \u003ccode\u003estandard_conforming_strings = on\u003c/code\u003e。\u003c/p\u003e\n\u003cp\u003e为了兼容旧服务器，客户端应用程序仍然支持在 \u003ccode\u003estandard_conforming_strings = off\u003c/code\u003e 的服务器上执行操作。服务器变量 \u003ccode\u003eescape_string_warning\u003c/code\u003e 已被移除，因为已无必要。\u003c/p\u003e","id":"19.0-2c213911526432f1","identity_text":"Force standard_conforming_strings to always be on in the database server (Tom Lane) Dumps created using pre-PostgreSQL 19 versions of pg_dump or pg_dumpall, and using standard_conforming_strings = off, will not properly load into PostgreSQL 19 and later servers. Users should create dumps using PostgreSQL 19 or later versions of these applications, or use standard_conforming_strings = on. Client applications still support operations with servers having standard_conforming_strings = off, for compatibility with old servers. The server variable escape_string_warning has been removed as unnecessary.","part":"migration","patch_ids":["f5987b8788598cff2c835051633022a4"],"related_changes":[],"relations":[],"section":"兼容性","section_path":["兼容性"],"source_commits":["457620845"],"source_entry_id":"19.0/migration/004","source_hash":"c4f9f9d32fefdf6df8ccf581a3a9d881e4c09bd24359b11641136a0fd1cb5db6","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","statement_hash":"696303749de67371484ae06d069e6d9d01ae9401a71810e825dcc4efda391fa3","text":"强制数据库服务器中的 standard_conforming_strings 始终为 on（Tom Lane）§ 使用 PostgreSQL 19 之前版本的pg_dump或pg_dumpall创建、且使用了 standard_conforming_strings = off 的转储，将无法正确载入 PostgreSQL 19 及更高版本的服务器。用户应使用这些应用程序的 PostgreSQL 19 或更高版本创建转储，或者使用 standard_conforming_strings = on。 为了兼容旧服务器，客户端应用程序仍然支持在 standard_conforming_strings = off 的服务器上执行操作。服务器变量 escape_string_warning 已被移除，因为已无必要。","title":"强制数据库服务器中的 standard_conforming_strings 始终为 on","variants":[],"version":"19.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":["b380a56a3"],"commit_groups":[["b380a56a3"]],"commits":["b380a56a3"],"cves":[],"db_id":"0f8efb4cff76fe54d45530b1262f678a","html":"\u003cp\u003e禁止数据库名、角色名和表空间名中出现回车和换行（Mahendra Singh Thalor）\u003ca href=\"https://postgr.es/c/b380a56a3\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这样做是为了避免安全问题。\u003ca href=\"/docs/19/pgupgrade.html\" title=\"pg_upgrade\"\u003e\u003cspan\u003epg_upgrade\u003c/span\u003e\u003c/a\u003e也会拒绝升级那些使用此类名称的数据库集簇。\u003c/p\u003e","id":"19.0-07f0137a38635d0b","identity_text":"Disallow carriage returns and line feeds in database, role, and tablespace names (Mahendra Singh Thalor) pg_upgrade will also disallow upgrading of clusters that use such names. This was changed to avoid security problems.","part":"migration","patch_ids":["4c82032b0e66552171db30560a84fcf6"],"related_changes":[],"relations":[],"section":"兼容性","section_path":["兼容性"],"source_commits":["b380a56a3"],"source_entry_id":"19.0/migration/005","source_hash":"d9d6648afb875ea815d9ead2982f136ba6f41ae97c8305e53b58b65c7486235a","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","statement_hash":"ad32dd3c8f6a910d242148086becb69efd82cd95622b540fa6f3ad7a4e16f429","text":"禁止数据库名、角色名和表空间名中出现回车和换行（Mahendra Singh Thalor）§ 这样做是为了避免安全问题。pg_upgrade也会拒绝升级那些使用此类名称的数据库集簇。","title":"禁止数据库名、角色名和表空间名中出现回车和换行","variants":[],"version":"19.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":["b352d3d80","b3b0b4571"],"commit_groups":[["b352d3d80"],["b3b0b4571"]],"commits":["b352d3d80","b3b0b4571"],"cves":[],"db_id":"bbd6b84aeeaf610165c06bae2b0299d6","html":"\u003cp\u003e将 \u003ca href=\"/docs/19/datatype-net-types.html\" title=\"8.9. 网络地址类型\"\u003e\u003ccode\u003einet\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/datatype-net-types.html\" title=\"8.9. 网络地址类型\"\u003e\u003ccode\u003ecidr\u003c/code\u003e\u003c/a\u003e 数据类型的默认索引操作符类从\u003ca href=\"/docs/19/btree-gist.html\" title=\"F.8. btree_gist — 具有 B-树行为的 GiST 操作符类\"\u003ebtree_gist\u003c/a\u003e改为 \u003ca href=\"/docs/19/gist.html\" title=\"65.2. GiST 索引\"\u003eGiST\u003c/a\u003e（Tom Lane）\u003ca href=\"https://postgr.es/c/b3b0b4571\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/b352d3d80\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/docs/19/btree-gist.html\" title=\"F.8. btree_gist — 具有 B-树行为的 GiST 操作符类\"\u003ebtree_gist\u003c/a\u003e的 \u003ccode\u003einet\u003c/code\u003e/\u003ccode\u003ecidr\u003c/code\u003e 操作符类存在缺陷，因为它们可能排除本应返回的行。\u003ca href=\"/docs/19/pgupgrade.html\" title=\"pg_upgrade\"\u003e\u003cspan\u003epg_upgrade\u003c/span\u003e\u003c/a\u003e将拒绝升级包含\u003ca href=\"/docs/19/btree-gist.html\" title=\"F.8. btree_gist — 具有 B-树行为的 GiST 操作符类\"\u003ebtree_gist\u003c/a\u003e \u003ccode\u003einet\u003c/code\u003e/\u003ccode\u003ecidr\u003c/code\u003e 索引的数据库集簇。\u003c/p\u003e","id":"19.0-e5009c4b0e44386f","identity_text":"Change the default index opclasses for inet and cidr data types from btree-gist to GiST (Tom Lane) The btree-gist inet/cidr opclasses are broken because they can exclude rows that should be returned. pg_upgrade will disallow upgrading of clusters with btree-gist inet/cidr indexes.","part":"migration","patch_ids":["5f29df7f225f782b9684cc42760b7f96","9c1098e770febac330c7cc44915cac6b"],"related_changes":[],"relations":[],"section":"兼容性","section_path":["兼容性"],"source_commits":["b352d3d80","b3b0b4571"],"source_entry_id":"19.0/migration/006","source_hash":"bcad9b83405cd9f68ea551fb80f30d2d8da8c52009e65b68dabd4e687f1f8110","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","statement_hash":"1b48edee148244a08df9c9fc19d5499e8f3e93d313d216e6a12d4aea70e762bb","text":"将 inet 和 cidr 数据类型的默认索引操作符类从btree_gist改为 GiST（Tom Lane）§ § btree_gist的 inet/cidr 操作符类存在缺陷，因为它们可能排除本应返回的行。pg_upgrade将拒绝升级包含btree_gist inet/cidr 索引的数据库集簇。","title":"将 inet 和 cidr 数据类型的默认索引操作符类从btree_gist改为 GiST","variants":[],"version":"19.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":["21c69dc73"],"commit_groups":[["21c69dc73"]],"commits":["21c69dc73"],"cves":[],"db_id":"778475a1b837861f70094d5ceb2c5e00","html":"\u003cp\u003e禁止在 \u003ca href=\"/docs/19/sql-copy.html\" title=\"COPY\"\u003e\u003ccode\u003eCOPY FROM ... WHERE\u003c/code\u003e\u003c/a\u003e 中使用系统列（Tom Lane）\u003ca href=\"https://postgr.es/c/21c69dc73\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这些列的值并未明确定义。\u003c/p\u003e","id":"19.0-940009c2e7beae07","identity_text":"Disallow system columns from being used in COPY FROM ... WHERE (Tom Lane) The values of such columns were not well-defined.","part":"migration","patch_ids":["4b03e5cd2822d97a82583c446462a0fc"],"related_changes":[],"relations":[],"section":"兼容性","section_path":["兼容性"],"source_commits":["21c69dc73"],"source_entry_id":"19.0/migration/007","source_hash":"10e8dbc64b58cb2e6f2e54867daffca75598a704fdd023899c025327e183c54c","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","statement_hash":"579a9ff0903438067962eb326e682f0081809e9b7f29423e0d2af99e7d40eed6","text":"禁止在 COPY FROM ... WHERE 中使用系统列（Tom Lane）§ 这些列的值并未明确定义。","title":"禁止在 COPY FROM ... WHERE 中使用系统列","variants":[],"version":"19.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":["8d829f5a0"],"commit_groups":[["8d829f5a0"]],"commits":["8d829f5a0"],"cves":[],"db_id":"211e837dc7f9cc71a096ad987b1144ac","html":"\u003cp\u003e将不返回任何行的 \u003ca href=\"/docs/19/functions-json.html\" title=\"9.17. JSON 函数和操作符\"\u003e\u003ccode\u003ejson_array()\u003c/code\u003e\u003c/a\u003e 调用改为返回空 \u003cacronym\u003eJSON\u003c/acronym\u003e 数组（Richard Guo）\u003ca href=\"https://postgr.es/c/8d829f5a0\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此前会返回 \u003ccode\u003eNULL\u003c/code\u003e。\u003c/p\u003e","id":"19.0-28887c6175f1aca5","identity_text":"Change a json_array() call which returns no rows to return an empty JSON array (Richard Guo) This previously returned NULL.","part":"migration","patch_ids":["733a64f5cc78dfc189cdc0be1e7005a2"],"related_changes":[],"relations":[],"section":"兼容性","section_path":["兼容性"],"source_commits":["8d829f5a0"],"source_entry_id":"19.0/migration/008","source_hash":"c9026a8f7dc5b8e5ee222913b32528ec83fd880eb76ec6075ea29ef169bc6302","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","statement_hash":"91028f49e3f39916e3f88fd906dc82c048f83731d9e3eae83630f455228e1a60","text":"将不返回任何行的 json_array() 调用改为返回空 JSON 数组（Richard Guo）§ 此前会返回 NULL。","title":"将不返回任何行的 json_array() 调用改为返回空 JSON 数组","variants":[],"version":"19.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":["de28140de"],"commit_groups":[["de28140de"]],"commits":["de28140de"],"cves":[],"db_id":"beedc195aa1ee31a93e09290f46c1a76","html":"\u003cp\u003e让事务把其 \u003ccode\u003eREAD ONLY\u003c/code\u003e 和 \u003ccode\u003eDEFERRABLE\u003c/code\u003e 状态传递给\u003ca href=\"/docs/19/postgres-fdw.html\" title=\"F.40. postgres_fdw — 访问存储在外部 PostgreSQL 服务器中的数据\"\u003epostgres_fdw\u003c/a\u003e会话（Etsuro Fujita）\u003ca href=\"https://postgr.es/c/de28140de\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这意味着 \u003ccode\u003eREAD ONLY\u003c/code\u003e 事务将不能再修改由\u003ca href=\"/docs/19/postgres-fdw.html\" title=\"F.40. postgres_fdw — 访问存储在外部 PostgreSQL 服务器中的数据\"\u003epostgres_fdw\u003c/a\u003e会话处理的行。\u003c/p\u003e","id":"19.0-c8cd45a36d0a5393","identity_text":"Cause transactions to pass their READ ONLY and DEFERRABLE status to postgres-fdw sessions (Etsuro Fujita) This means READ ONLY transactions can no longer modify rows processed by postgres-fdw sessions.","part":"migration","patch_ids":["efb80ef332b64868d899df491adab085"],"related_changes":[],"relations":[],"section":"兼容性","section_path":["兼容性"],"source_commits":["de28140de"],"source_entry_id":"19.0/migration/009","source_hash":"aedfab70eafb85c9a3ebed4170e316ccb68c5d66f2c9d87e1d276b2877ac8094","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","statement_hash":"a1cca77513b91f2bc10a1b05552526e2158b9c52c70de896bdbfddb837974d2b","text":"让事务把其 READ ONLY 和 DEFERRABLE 状态传递给postgres_fdw会话（Etsuro Fujita）§ 这意味着 READ ONLY 事务将不能再修改由postgres_fdw会话处理的行。","title":"让事务把其 READ ONLY 和 DEFERRABLE 状态传递给postgres_fdw会话","variants":[],"version":"19.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":["79534f906"],"commit_groups":[["79534f906"]],"commits":["79534f906"],"cves":[],"db_id":"b49e1630d4751a0a3391d1c9cda2c73c","html":"\u003cp\u003e将 \u003ca href=\"/docs/19/runtime-config-locks.html#GUC-MAX-LOCKS-PER-TRANSACTION\"\u003e\u003ccode\u003emax_locks_per_transaction\u003c/code\u003e\u003c/a\u003e 的默认值从 64 改为 128（Heikki Linnakangas）\u003ca href=\"https://postgr.es/c/79534f906\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e锁大小分配方式已经改变，因此要达到与先前版本相同的容量，实际上现在必须将设置值翻倍。\u003c/p\u003e","id":"19.0-0f6fe2deb41d452f","identity_text":"Change default of max_locks_per_transaction from 64 to 128 (Heikki Linnakangas) Lock size allocation has changed, so effectively settings must now be doubled to match their capacity in previous releases.","part":"migration","patch_ids":["39ca5de25df82eeade6fa15b148cba38"],"related_changes":[],"relations":[],"section":"兼容性","section_path":["兼容性"],"source_commits":["79534f906"],"source_entry_id":"19.0/migration/010","source_hash":"77109b01dcfb7956ff1d2d5d39ab548e9520cfe4164c1927463934a1cf43e715","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","statement_hash":"b047f9fc149f0588327f77f9adf686e5da4c3cc852f9df57e36cee3c9a3ff845","text":"将 max_locks_per_transaction 的默认值从 64 改为 128（Heikki Linnakangas）§ 锁大小分配方式已经改变，因此要达到与先前版本相同的容量，实际上现在必须将设置值翻倍。","title":"将 max_locks_per_transaction 的默认值从 64 改为 128","variants":[],"version":"19.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":["7f8c88c2b"],"commit_groups":[["7f8c88c2b"]],"commits":["7f8c88c2b"],"cves":[],"db_id":"6b3e754eb033e05517d5e01c53cbb26f","html":"\u003cp\u003e默认禁用 \u003ca href=\"/docs/19/jit.html\" title=\"第 30 章 即时编译（JIT）\"\u003e\u003cacronym\u003eJIT\u003c/acronym\u003e\u003c/a\u003e（Jelte Fennema-Nio）\u003ca href=\"https://postgr.es/c/7f8c88c2b\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e之前 \u003cacronym\u003eJIT\u003c/acronym\u003e 默认启用，并根据优化器代价决定是否激活。不幸的是，这种代价估算被认为并不可靠，因此需要大量运行大型分析查询的站点手工启用 \u003cacronym\u003eJIT\u003c/acronym\u003e。\u003c/p\u003e","id":"19.0-2d1995791bfba273","identity_text":"Change JIT to be disabled by default (Jelte Fennema-Nio) Previously JIT was enabled by default, and activated based on optimizer costs, but this costing has been determined to be unreliable. This change requires sites that are doing many large analytical queries to manually enable JIT.","part":"migration","patch_ids":["df6972f1b29556533e8f1d64ffe7c753"],"related_changes":[],"relations":[],"section":"兼容性","section_path":["兼容性"],"source_commits":["7f8c88c2b"],"source_entry_id":"19.0/migration/011","source_hash":"d5d7f48ee4c1effa36bf0427d8b159eb540c0335fb0e7d37c451e2f950663546","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","statement_hash":"532c84b6fa800a1060de0ff778f814cfac6bef59a00a8aff7b59d1e42bb1bef4","text":"默认禁用 JIT（Jelte Fennema-Nio）§ 之前 JIT 默认启用，并根据优化器代价决定是否激活。不幸的是，这种代价估算被认为并不可靠，因此需要大量运行大型分析查询的站点手工启用 JIT。","title":"默认禁用 JIT","variants":[],"version":"19.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":["3edaf29fa"],"commit_groups":[["3edaf29fa"]],"commits":["3edaf29fa"],"cves":[],"db_id":"70cd59be0b3b3c22c3c028193c91e416","html":"\u003cp\u003e将 \u003ccode\u003esync_error_count\u003c/code\u003e 重命名为 \u003ccode\u003esync_table_error_count\u003c/code\u003e，该列位于系统视图 \u003ca href=\"/docs/19/monitoring-stats.html#PG-STAT-SUBSCRIPTION-STATS\" title=\"表 27.20. pg_stat_subscription_stats 视图\"\u003e\u003ccode\u003epg_stat_subscription_stats\u003c/code\u003e\u003c/a\u003e 中（Vignesh C）\u003ca href=\"https://postgr.es/c/3edaf29fa\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这是因为现在会单独跟踪序列错误。\u003c/p\u003e","id":"19.0-b1c1710fd414582c","identity_text":"Rename column sync_error_count to sync_table_error_count in system view pg_stat_subscription_stats (Vignesh C) This is necessary since sequence errors are now tracked separately.","part":"migration","patch_ids":["612943743e97964090c65bd7f4cdedca"],"related_changes":[{"db_id":"9a6f7f73dea73507b7e7d161044aa58a","evidence":{"patch_ids":["612943743e97964090c65bd7f4cdedca"],"same_day":false},"kind":"related","label":"19beta4","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","title":"新增 sync_seq_error_count 列到系统视图 pg_stat_subscription_stats，用于报告序列同步错误","url":"/docs/compare/?release=19.0#19.0-1e43385099e277ba","version":"19.0"}],"relations":[{"evidence":{"patch_ids":["612943743e97964090c65bd7f4cdedca"],"same_day":false},"rule":2,"target":"9a6f7f73dea73507b7e7d161044aa58a","type":"related"}],"section":"兼容性","section_path":["兼容性"],"source_commits":["3edaf29fa"],"source_entry_id":"19.0/migration/012","source_hash":"a14e8b11a625b613af50951c94510fbe64a46f611fc59e78fcaaffe25b659690","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","statement_hash":"1f4f95c0813c6e77c441fd924e4b2ab8e496ff881eefbd3447d3f107e05fe57e","text":"将 sync_error_count 重命名为 sync_table_error_count，该列位于系统视图 pg_stat_subscription_stats 中（Vignesh C）§ 这是因为现在会单独跟踪序列错误。","title":"将 sync_error_count 重命名为 sync_table_error_count，该列位于系统视图 pg_stat_subscription_stats 中","variants":[],"version":"19.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":["6c5c393b7"],"commit_groups":[["6c5c393b7"]],"commits":["6c5c393b7"],"cves":[],"db_id":"1ecc37a4bc0681ac63229c9b83f896ff","html":"\u003cp\u003e将等待事件类型 \u003ccode\u003eBUFFERPIN\u003c/code\u003e 重命名为 \u003ccode\u003eBUFFER\u003c/code\u003e（Andres Freund）\u003ca href=\"https://postgr.es/c/6c5c393b7\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-81577b68a3e9a3cd","identity_text":"Rename wait event type BUFFERPIN to BUFFER (Andres Freund)","part":"migration","patch_ids":["05a4d97cfbb6a11f234cd121c8a4175b"],"related_changes":[],"relations":[],"section":"兼容性","section_path":["兼容性"],"source_commits":["6c5c393b7"],"source_entry_id":"19.0/migration/013","source_hash":"1c827752bc91870e249ffe8959c9bb2f54d7f1d069aaf5d2e31c31dd3bb5f640","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","statement_hash":"f95959a5ae8abdf9d088444fdc699e05d3883f7bcc008adc16e100c5e8e5a2db","text":"将等待事件类型 BUFFERPIN 重命名为 BUFFER（Andres Freund）§","title":"将等待事件类型 BUFFERPIN 重命名为 BUFFER","variants":[],"version":"19.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":["bc6374cd7"],"commit_groups":[["bc6374cd7"]],"commits":["bc6374cd7"],"cves":[],"db_id":"419bfd0eee41078235d947a0cb18b85a","html":"\u003cp\u003e将索引访问方法处理器改为使用静态分配的 \u003ca href=\"/docs/19/indexam.html\" title=\"第 63 章 索引访问方法接口定义\"\u003e\u003ccode\u003eIndexAmRoutines\u003c/code\u003e\u003c/a\u003e 结构体，而不是动态分配的结构体（Matthias van de Meent）\u003ca href=\"https://postgr.es/c/bc6374cd7\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-02d55f924e33d8e5","identity_text":"Change index access method handlers to use a static IndexAmRoutines structure, rather than dynamically allocated ones (Matthias van de Meent)","part":"migration","patch_ids":["309ecd676dbc1e378df3e762b4e43d07"],"related_changes":[],"relations":[],"section":"兼容性","section_path":["兼容性"],"source_commits":["bc6374cd7"],"source_entry_id":"19.0/migration/014","source_hash":"8d57149ef038da9610e4d527d1b77c67a259a9a2d5db45bfe77b68c2ac0f956a","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","statement_hash":"77ac996dcd32cd0c913325b06fad5609fb2d0a07a577f342baba7263879bf0fc","text":"将索引访问方法处理器改为使用静态分配的 IndexAmRoutines 结构体，而不是动态分配的结构体（Matthias van de Meent）§","title":"将索引访问方法处理器改为使用静态分配的 IndexAmRoutines 结构体，而不是动态分配的结构体","variants":[],"version":"19.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":["91f33a2ae"],"commit_groups":[["91f33a2ae"]],"commits":["91f33a2ae"],"cves":[],"db_id":"9eb7c5f55e60c1774249ad77a6e3e680","html":"\u003cp\u003e移除优化器钩子 get_relation_info_hook，并新增位置更合适的钩子 build_simple_rel_hook（Robert Haas）\u003ca href=\"https://postgr.es/c/91f33a2ae\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-6aed8df8f1048b04","identity_text":"Remove optimizer hook get_relation_info_hook and add better-placed hook build_simple_rel_hook (Robert Haas)","part":"migration","patch_ids":["ad735bfab9018bd4e9455caa63620d0e"],"related_changes":[],"relations":[],"section":"兼容性","section_path":["兼容性"],"source_commits":["91f33a2ae"],"source_entry_id":"19.0/migration/015","source_hash":"a9ee2d58ff00b61b8ad6674b0481dbe65812e81f01e72a6177ac42169670f1b5","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","statement_hash":"1262304b32f806dbc40ddb3a8a7dbc07bd5c934aa44cbe10f9aae2da5a799e17","text":"移除优化器钩子 get_relation_info_hook，并新增位置更合适的钩子 build_simple_rel_hook（Robert Haas）§","title":"移除优化器钩子 get_relation_info_hook，并新增位置更合适的钩子 build_simple_rel_hook","variants":[],"version":"19.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":["4df5fe383"],"commit_groups":[["4df5fe383"]],"commits":["4df5fe383"],"cves":[],"db_id":"24d706693cffbda588c92cb4158295d1","html":"\u003cp\u003e修改\u003ca href=\"/docs/19/app-psql.html\" title=\"psql\"\u003e\u003cspan\u003epsql\u003c/span\u003e\u003c/a\u003e的 \u003ccode\u003e\\crosstabview\u003c/code\u003e 命令，使其遵循 \u003ccode\u003e\\pset null\u003c/code\u003e 设置（Chao Li）\u003ca href=\"https://postgr.es/c/4df5fe383\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-57a268be8495814f","identity_text":"Change psql's \\crosstabview command to honor the \\pset null setting (Chao Li)","part":"migration","patch_ids":["48547778883b24941cb761a838f78799"],"related_changes":[],"relations":[],"section":"兼容性","section_path":["兼容性"],"source_commits":["4df5fe383"],"source_entry_id":"19.0/migration/016","source_hash":"9be60c7c3f3e576d0ce8811dbb5c156484f00b4dbc81d97ca985d4a9208f2844","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","statement_hash":"88e115335c8f352de42a90fea375b95f3f56eab41a01210d8134cd525b47789d","text":"修改psql的 \\crosstabview 命令，使其遵循 \\pset null 设置（Chao Li）§","title":"修改psql的 \\crosstabview 命令，使其遵循 \\pset null 设置","variants":[],"version":"19.0"},{"also_in":[],"category":"compatibility","category_label":"Compatibility","commit_aliases":["77645d44e"],"commit_groups":[["77645d44e"]],"commits":["77645d44e"],"cves":[],"db_id":"23f95991b047086faa8e13abfe46f775","html":"\u003cp\u003e移除 \u003ccode\u003eMULE_INTERNAL\u003c/code\u003e 编码（Thomas Munro）\u003ca href=\"https://postgr.es/c/77645d44e\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这种编码很复杂，而且很少使用。使用它的数据库将需要使用不同的编码进行导出和恢复。\u003c/p\u003e","id":"19.0-b575f973d52cf40d","identity_text":"Remove MULE_INTERNAL encoding (Thomas Munro) This encoding was complex and rarely used. Databases using it will need to be dumped and restored with a different encoding.","part":"migration","patch_ids":["8d7fc34088b380faed06d973ad51df33"],"related_changes":[],"relations":[],"section":"兼容性","section_path":["兼容性"],"source_commits":["77645d44e"],"source_entry_id":"19.0/migration/017","source_hash":"bbd1a72fdae94e463059def85d49a5f2971302c20887b0b7f5942e747617ecb3","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","statement_hash":"0bcba35e6ec3fed48fcf47b2a0c8c06360235579f1c905251cbb0ae5c682c2e8","text":"移除 MULE_INTERNAL 编码（Thomas Munro）§ 这种编码很复杂，而且很少使用。使用它的数据库将需要使用不同的编码进行导出和恢复。","title":"移除 MULE_INTERNAL 编码","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["383eb21eb"],"commit_groups":[["383eb21eb"]],"commits":["383eb21eb"],"cves":[],"db_id":"39c117f3fa7adf79da47166f4825b1dc","html":"\u003cp\u003e在不存在 NULL 时，允许将 \u003ccode\u003eNOT IN\u003c/code\u003e 转换为更高效的 \u003ccode\u003eANTI JOIN\u003c/code\u003e（Richard Guo）\u003ca href=\"https://postgr.es/c/383eb21eb\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-ed47226a272cd207","identity_text":"Allow NOT IN clauses to be converted to more efficient ANTI JOINs when NULLs are not present (Richard Guo)","part":"changes","patch_ids":["5afcd1265980a140ea7dd0e9cb066b15"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["383eb21eb"],"source_entry_id":"19.0/changes/001","source_hash":"4c50ca5897e46247f8e4b6f59a28f8aa3ce02b3ee0834a0431a0a78515a3d073","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"fb215706df436cf3276a0acf413da59db60cc02e3d1216b1d1d0b439382e7249","text":"在不存在 NULL 时，允许将 NOT IN 转换为更高效的 ANTI JOIN（Richard Guo）§","title":"在不存在 NULL 时，允许将 NOT IN 转换为更高效的 ANTI JOIN","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["cf74558fe"],"commit_groups":[["cf74558fe"]],"commits":["cf74558fe"],"cves":[],"db_id":"b14ad51258f5cdaacbbfcc642a4e2e5a","html":"\u003cp\u003e允许更多 \u003ccode\u003eLEFT JOIN\u003c/code\u003e 转换为 \u003ccode\u003eANTI JOIN\u003c/code\u003e（Tender Wang，Richard Guo）\u003ca href=\"https://postgr.es/c/cf74558fe\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-1ea26a6708614047","identity_text":"Allow more LEFT JOINs to be converted to ANTI JOINs (Tender Wang, Richard Guo)","part":"changes","patch_ids":["34be0ad8c51c6d6c8e622c145dc771f9"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["cf74558fe"],"source_entry_id":"19.0/changes/002","source_hash":"7e327562d4a6b632797fe90482e8dc13f67f69aaa89cb9db338af40677140e00","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"40cd753f910f478e2dce62e7dba53068faa04cb06f20e30ecf2411ca8a5b0363","text":"允许更多 LEFT JOIN 转换为 ANTI JOIN（Tender Wang，Richard Guo）§","title":"允许更多 LEFT JOIN 转换为 ANTI JOIN","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["0da29e4cb"],"commit_groups":[["0da29e4cb"]],"commits":["0da29e4cb"],"cves":[],"db_id":"0f0d884ae845f9038785e481172d1f4f","html":"\u003cp\u003e允许在唯一内侧的 \u003ccode\u003eANTI JOIN\u003c/code\u003e 中使用 Memoize（Richard Guo）\u003ca href=\"https://postgr.es/c/0da29e4cb\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-9f9ed9ab8122d02e","identity_text":"Allow use of Memoize for ANTI JOINs with unique inner sides (Richard Guo)","part":"changes","patch_ids":["8b76681fe126b848fe98cb7d5af237a6"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["0da29e4cb"],"source_entry_id":"19.0/changes/003","source_hash":"bdb07863cf84925c4e542062653780456747d761f7832054ff2835a51e429405","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"d1a634c1f6b4d823672618004f88435d00388c69514631952683becc4a53d7ea","text":"允许在唯一内侧的 ANTI JOIN 中使用 Memoize（Richard Guo）§","title":"允许在唯一内侧的 ANTI JOIN 中使用 Memoize","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["3a08a2a8b","8e1185910","bd94845e8"],"commit_groups":[["3a08a2a8b"],["8e1185910"],["bd94845e8"]],"commits":["3a08a2a8b","8e1185910","bd94845e8"],"cves":[],"db_id":"2c9e35c599775907c3b3bdda01894b08","html":"\u003cp\u003e允许在连接之前先执行某些聚合处理（Richard Guo，Antonin Houska）\u003ca href=\"https://postgr.es/c/8e1185910\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/bd94845e8\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/3a08a2a8b\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这可以减少需要处理的行数。\u003c/p\u003e","id":"19.0-48a24ee5e518138a","identity_text":"Allow some aggregate processing to be performed before joins (Richard Guo, Antonin Houska) This can reduce the number of rows needed to be processed.","part":"changes","patch_ids":["5913f214801aba0a67487defef3e5b0d","8291b2a60abb0fe5a064be000be5f8fa","cffcdfa6b2dc4400ca76dfa397fae5ef"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["3a08a2a8b","8e1185910","bd94845e8"],"source_entry_id":"19.0/changes/004","source_hash":"7f74d6348893d4c4907c7fdba9651e0097c05a2f55b4edd383a1c9577534d377","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"ebcf53889c9089799193d955b5499ed5608d3ed9bebbf5f510a69c50c88d2a6a","text":"允许在连接之前先执行某些聚合处理（Richard Guo，Antonin Houska）§§§ 这可以减少需要处理的行数。","title":"允许在连接之前先执行某些聚合处理","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["1811f1af9"],"commit_groups":[["1811f1af9"]],"commits":["1811f1af9"],"cves":[],"db_id":"f09575e09ca42ed766499dd663fde44f","html":"\u003cp\u003e改进哈希连接对带 \u003ccode\u003eNULL\u003c/code\u003e 连接键元组的处理（Tom Lane）\u003ca href=\"https://postgr.es/c/1811f1af9\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-240f02bcc93c509f","identity_text":"Improve hash join's handling of tuples with NULL join keys (Tom Lane)","part":"changes","patch_ids":["210e0aafe9768e27a805d2751403fe01"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["1811f1af9"],"source_entry_id":"19.0/changes/005","source_hash":"ea2def5dda27297a9c9b9dc23f0a71bceb2c7afa4043ffe0486ecf5cdb577f91","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"4be393e01014eee5764cb829f8dfa6740a5ed45cd6dcfe1ec9bcde4508adf99a","text":"改进哈希连接对带 NULL 连接键元组的处理（Tom Lane）§","title":"改进哈希连接对带 NULL 连接键元组的处理","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["24225ad9a"],"commit_groups":[["24225ad9a"]],"commits":["24225ad9a"],"cves":[],"db_id":"5e54b3a7512536e84f3ce0af31e9f570","html":"\u003cp\u003e改进半连接规划（Richard Guo）\u003ca href=\"https://postgr.es/c/24225ad9a\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-6b2101a8e979009b","identity_text":"Improve the planning of semijoins (Richard Guo)","part":"changes","patch_ids":["12f0b9df9adf791089766c7b6965b423"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["24225ad9a"],"source_entry_id":"19.0/changes/006","source_hash":"75942474d30819e9e00598e0c7237ad5f11d5d761f5effe8cff1d0eeca807b75","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"3fd89272a005636d87d53bdef6753d0bc89ae0d9a98d441084003e15c79228f9","text":"改进半连接规划（Richard Guo）§","title":"改进半连接规划","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["55a780e94"],"commit_groups":[["55a780e94"]],"commits":["55a780e94"],"cves":[],"db_id":"6203b6154c3f44bfeba263b117e32150","html":"\u003cp\u003e允许 Append 和 MergeAppend 考虑显式增量排序（Richard Guo）\u003ca href=\"https://postgr.es/c/55a780e94\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-d9b16eaa714a4a8b","identity_text":"Allow Append and MergeAppend to consider explicit incremental sorts (Richard Guo)","part":"changes","patch_ids":["27e38922acefd323b2455933decbe319"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["55a780e94"],"source_entry_id":"19.0/changes/007","source_hash":"168d85d328dd11f20f1143c8a296e6e58847c424d173b21a50778b8fd9926fc7","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"8157792aabe82a5852660e085153c9a6bf0beab886d8b8c2b2ede534649d2d3f","text":"允许 Append 和 MergeAppend 考虑显式增量排序（Richard Guo）§","title":"允许 Append 和 MergeAppend 考虑显式增量排序","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["f41ab5157"],"commit_groups":[["f41ab5157"]],"commits":["f41ab5157"],"cves":[],"db_id":"5338907e026429e992a5d52baa60153c","html":"\u003cp\u003e在常量折叠期间将 \u003ca href=\"/docs/19/functions-comparison.html#FUNCTIONS-COMPARISON-PRED-TABLE\" title=\"表 9.2. 比较谓词\"\u003e\u003ccode\u003eIS [NOT] DISTINCT FROM NULL\u003c/code\u003e\u003c/a\u003e 转换为 \u003ccode\u003eIS [NOT] NULL\u003c/code\u003e（Richard Guo）\u003ca href=\"https://postgr.es/c/f41ab5157\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e后一种形式更易优化。\u003c/p\u003e","id":"19.0-624a89f78af89233","identity_text":"Convert IS [NOT] DISTINCT FROM NULL to IS [NOT] NULL during constant folding (Richard Guo) The latter form is more easily optimized.","part":"changes","patch_ids":["a2fb1e20430f831c885b369e3405d403"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["f41ab5157"],"source_entry_id":"19.0/changes/008","source_hash":"f8cee679d25843f381baa6003d11f6160d2534997063e623fea3e5946afc7e7e","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"584ad92a9292ff29cd0d6cbda4cca44bf3e68f1d8d60a18c5eed98840068e80e","text":"在常量折叠期间将 IS [NOT] DISTINCT FROM NULL 转换为 IS [NOT] NULL（Richard Guo）§ 后一种形式更易优化。","title":"在常量折叠期间将 IS [NOT] DISTINCT FROM NULL 转换为 IS [NOT] NULL","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["0a3796125"],"commit_groups":[["0a3796125"]],"commits":["0a3796125"],"cves":[],"db_id":"11fc82a446b38332c14ca15e6502c3ba","html":"\u003cp\u003e当输入被证明非空时，将 \u003ca href=\"/docs/19/functions-comparison.html#FUNCTIONS-COMPARISON-PRED-TABLE\" title=\"表 9.2. 比较谓词\"\u003e\u003ccode\u003eIS [NOT] DISTINCT FROM\u003c/code\u003e\u003c/a\u003e 简化为等值/不等值操作符（Richard Guo）\u003ca href=\"https://postgr.es/c/0a3796125\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-ce270a5acc606cd6","identity_text":"Simplify IS [NOT] DISTINCT FROM to equality/inequality operators when inputs are proven non-nullable (Richard Guo)","part":"changes","patch_ids":["606b2febb5bf8d1ba041bc732eecd82c"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["0a3796125"],"source_entry_id":"19.0/changes/009","source_hash":"f37bbc446a232ba86a7f726cccd2db4d1b24885ba64e8a8a9984d4b45ecc6793","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"3ed3189a74dce28a3d35d0aeaf5af4e7c8c37ad2e2379cbe85ac4005bcb5a604","text":"当输入被证明非空时，将 IS [NOT] DISTINCT FROM 简化为等值/不等值操作符（Richard Guo）§","title":"当输入被证明非空时，将 IS [NOT] DISTINCT FROM 简化为等值/不等值操作符","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["e2debb643"],"commit_groups":[["e2debb643"]],"commits":["e2debb643"],"cves":[],"db_id":"be54aea280d26ed11021e92f08c48471","html":"\u003cp\u003e在优化器中更早地对 \u003cem\u003e\u003ccode\u003evar\u003c/code\u003e\u003c/em\u003e \u003ccode\u003eIS [NOT] NULL\u003c/code\u003e 做常量折叠（Richard Guo）\u003ca href=\"https://postgr.es/c/e2debb643\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这为后续优化创造了条件。\u003c/p\u003e","id":"19.0-515f3f8d5df3eb02","identity_text":"Perform earlier constant folding of var IS [NOT] NULL in the optimizer (Richard Guo) This allows for later optimizations.","part":"changes","patch_ids":["4da26000bced26e6b5a890ab16d061f3"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["e2debb643"],"source_entry_id":"19.0/changes/010","source_hash":"207dee13849180dc9608920be0724e490b3efe178b8488272a97eae878b1ec8d","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"2effe9bc40747a1dedba1a62ebceecfe10a353e6c2d7defc920764e73507eb25","text":"在优化器中更早地对 var IS [NOT] NULL 做常量折叠（Richard Guo）§ 这为后续优化创造了条件。","title":"在优化器中更早地对 var IS [NOT] NULL 做常量折叠","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["10c4fe074","cb7b7ec7a"],"commit_groups":[["10c4fe074"],["cb7b7ec7a"]],"commits":["10c4fe074","cb7b7ec7a"],"cves":[],"db_id":"57a1b62101caf6d36235619e5c096df9","html":"\u003cp\u003e简化 \u003ca href=\"/docs/19/functions-conditional.html#FUNCTIONS-COALESCE-NVL-IFNULL\" title=\"9.19.2. COALESCE\"\u003e\u003ccode\u003eCOALESCE()\u003c/code\u003e\u003c/a\u003e 和 \u003ccode\u003eROW(...) IS [NOT] NULL\u003c/code\u003e，以避免求值不必要的参数（Richard Guo）\u003ca href=\"https://postgr.es/c/10c4fe074\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/cb7b7ec7a\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-8d2f357a55f7037f","identity_text":"Simplify COALESCE() and ROW(...) IS [NOT] NULL to avoid evaluating unnecessary arguments (Richard Guo)","part":"changes","patch_ids":["68ba954bf29231cce3aacd7fdf28101a","aa728d0817a40cedb9a213b1975b65ea"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["10c4fe074","cb7b7ec7a"],"source_entry_id":"19.0/changes/011","source_hash":"4034bfc0738904fac7539b3194238c49a2b12d2ec8df9a88b15e47b198438015","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"016988a4c3afa7c989ab9e051214f974ecb92bcc3e8e5e6cf41a6588a8eb08c0","text":"简化 COALESCE() 和 ROW(...) IS [NOT] NULL，以避免求值不必要的参数（Richard Guo）§§","title":"简化 COALESCE() 和 ROW(...) IS [NOT] NULL，以避免求值不必要的参数","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["0aaf0de7f"],"commit_groups":[["0aaf0de7f"]],"commits":["0aaf0de7f"],"cves":[],"db_id":"8e5dddf4bed1eba38b72b9274cbe91d0","html":"\u003cp\u003e当输入被证明非空时，将 \u003ccode\u003eIS [NOT] TRUE/FALSE/UNKNOWN\u003c/code\u003e 简化为普通 boolean 表达式（Richard Guo）\u003ca href=\"https://postgr.es/c/0aaf0de7f\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-6b8d92824549bd0e","identity_text":"Simplify IS [NOT] TRUE/FALSE/UNKNOWN to plain boolean expressions when the input is proven non-nullable (Richard Guo)","part":"changes","patch_ids":["659aa13e96e6ca9a33f132d2e1273d81"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["0aaf0de7f"],"source_entry_id":"19.0/changes/012","source_hash":"47bcecc2c61cb3dedbf4fab001e38ad8110978c5f866a29caed2ef4a26df71ae","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"148a783b056c99a1f445e04204b2be1219aa7430b2007ed469c4d0f59279b2ff","text":"当输入被证明非空时，将 IS [NOT] TRUE/FALSE/UNKNOWN 简化为普通 boolean 表达式（Richard Guo）§","title":"当输入被证明非空时，将 IS [NOT] TRUE/FALSE/UNKNOWN 简化为普通 boolean 表达式","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["057012b20"],"commit_groups":[["057012b20"]],"commits":["057012b20"],"cves":[],"db_id":"731ee1882a965fff802edea15955fc65","html":"\u003cp\u003e加快大统计目标下的连接选择率计算（Ilia Evdokimov，David Geier）\u003ca href=\"https://postgr.es/c/057012b20\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-f1508e3c09a02f6a","identity_text":"Speed up join selectivity computations for large optimizer statistics targets (Ilia Evdokimov, David Geier)","part":"changes","patch_ids":["05810a8a82ed49e8d50c9a8d2307b017"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["057012b20"],"source_entry_id":"19.0/changes/013","source_hash":"cb5816282635fc4ea2cac9e1dada380cf14eabdd7423586d7e0ad26b80739f00","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"84bbb53ff5d48be13b424836a4e7afe094b25441ba268a7491cfa5b6fedd4a8d","text":"加快大统计目标下的连接选择率计算（Ilia Evdokimov，David Geier）§","title":"加快大统计目标下的连接选择率计算","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["1eccb9315"],"commit_groups":[["1eccb9315"]],"commits":["1eccb9315"],"cves":[],"db_id":"7f294ecac4e9a1916f488d72859c484d","html":"\u003cp\u003e为返回 boolean 值的函数启用正确的优化器统计信息（Tom Lane）\u003ca href=\"https://postgr.es/c/1eccb9315\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-c358e009273564cd","identity_text":"Enable proper optimizer statistics for functions returning boolean values (Tom Lane)","part":"changes","patch_ids":["f46850b6c4c52bf1a7b94d806ec57249"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["1eccb9315"],"source_entry_id":"19.0/changes/014","source_hash":"d5709e222aeb794df1186d7bfc6866f6314cc7c5d808163a04d35452e7811b6d","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"5d42b8b729544c58d41a4a5d300b78e9cab3bfc0edd1d32a68ff9e0627aa4d24","text":"为返回 boolean 值的函数启用正确的优化器统计信息（Tom Lane）§","title":"为返回 boolean 值的函数启用正确的优化器统计信息","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["f7f4052a4"],"commit_groups":[["f7f4052a4"]],"commits":["f7f4052a4"],"cves":[],"db_id":"e521d4153b595d7b0a4bd84a7f2997b5","html":"\u003cp\u003e允许在虚拟生成列上使用\u003ca href=\"/docs/19/sql-createstatistics.html\" title=\"CREATE STATISTICS\"\u003e扩展统计信息\u003c/a\u003e（Yugo Nagata）\u003ca href=\"https://postgr.es/c/f7f4052a4\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-27e354b00ed2166b","identity_text":"Allow extended statistics on virtual generated columns (Yugo Nagata)","part":"changes","patch_ids":["5fd1f955452ebdb244af256249b84e03"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["f7f4052a4"],"source_entry_id":"19.0/changes/015","source_hash":"5a074288a48869ff3a55a55fc43a11169ebfbd3cbd4eb589c0dcdf4fb7fb8318","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"f08840b159de68e3dfb347da5a75c110c84bb48e47d4d2bfb5133dc5919c168f","text":"允许在虚拟生成列上使用扩展统计信息（Yugo Nagata）§","title":"允许在虚拟生成列上使用扩展统计信息","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["0e80f3f88","302879bd6","ba97bf9cb","efbebb4e8"],"commit_groups":[["0e80f3f88"],["302879bd6"],["ba97bf9cb"],["efbebb4e8"]],"commits":["0e80f3f88","302879bd6","ba97bf9cb","efbebb4e8"],"cves":[],"db_id":"754bc8e61d68041704cf28e4bd68d59d","html":"\u003cp\u003e允许 \u003ca href=\"/docs/19/functions-admin.html#FUNCTIONS-ADMIN-STATSMOD\" title=\"表 9.106. 数据库对象统计信息操纵函数\"\u003e\u003ccode\u003epg_restore_extended_stats()\u003c/code\u003e\u003c/a\u003e 恢复优化器扩展统计信息（Corey Huinker，Michael Paquier，Chao Li）\u003ca href=\"https://postgr.es/c/0e80f3f88\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/302879bd6\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/efbebb4e8\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/ba97bf9cb\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-eb45123fe56770bd","identity_text":"Allow function pg_restore_extended_stats() to restore optimizer extended statistics (Corey Huinker, Michael Paquier, Chao Li)","part":"changes","patch_ids":["3aac308aad808487c34815e62a11c19b","754bade21783a1ed8ea2e5108389871a","7e47934dd8f6f597a4afdaa4cf023ea4","f7d7d21b159965e6b044a55c33ef754e"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["0e80f3f88","302879bd6","ba97bf9cb","efbebb4e8"],"source_entry_id":"19.0/changes/016","source_hash":"5d2ac60236272372b0b5df8707f760cf8c56aab84ea246fc1425d1da72001ee7","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"7d3748c033b3d8c7b34fb4d592a19202a21b00a59e5444ec84f5222e9c8449eb","text":"允许 pg_restore_extended_stats() 恢复优化器扩展统计信息（Corey Huinker，Michael Paquier，Chao Li）§§§§","title":"允许 pg_restore_extended_stats() 恢复优化器扩展统计信息","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["d756fa101"],"commit_groups":[["d756fa101"]],"commits":["d756fa101"],"cves":[],"db_id":"41aba3ef33942d6a6ed5d8ff2097d288","html":"\u003cp\u003e新增函数 \u003ca href=\"/docs/19/functions-admin.html#FUNCTIONS-ADMIN-STATSMOD\" title=\"表 9.106. 数据库对象统计信息操纵函数\"\u003e\u003ccode\u003epg_clear_extended_stats()\u003c/code\u003e\u003c/a\u003e 用于删除扩展统计信息（Corey Huinker，Michael Paquier）\u003ca href=\"https://postgr.es/c/d756fa101\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-06795fad84eeac75","identity_text":"Add function pg_clear_extended_stats() to remove extended statistics (Corey Huinker, Michael Paquier)","part":"changes","patch_ids":["f8f7de025b1acbacc549bb2543ec6f8d"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["d756fa101"],"source_entry_id":"19.0/changes/017","source_hash":"0143240d5d549c74da704a02c410b989b9d211c3681fdc39e588bb837092328c","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"0f4709c90206a532b27695343de92dbdd6e33aee5d3e711aa3d4169d99bafa27","text":"新增函数 pg_clear_extended_stats() 用于删除扩展统计信息（Corey Huinker，Michael Paquier）§","title":"新增函数 pg_clear_extended_stats() 用于删除扩展统计信息","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["8300d3ad4"],"commit_groups":[["8300d3ad4"]],"commits":["8300d3ad4"],"cves":[],"db_id":"4a027a3ab087d156be5cbf23dd9efa7b","html":"\u003cp\u003e调整优化器，使其在部分路径决策时考虑启动代价（Robert Haas，Tomas Vondra）\u003ca href=\"https://postgr.es/c/8300d3ad4\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-fcf2f288ee8ee0b7","identity_text":"Adjust the optimizer to consider startup costs of partial paths (Robert Haas, Tomas Vondra)","part":"changes","patch_ids":["d2ad0209d8ff2c3963c69fa63df1925a"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["8300d3ad4"],"source_entry_id":"19.0/changes/018","source_hash":"0979d34b0375be1003ebc03dfc24a3731e87f34dbd17f20d10a0e3cc2d409ab6","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"a1a8105573366e0b72a29f2a7c0159bf1ad23b35b98c09a09132c8cc4a182cab","text":"调整优化器，使其在部分路径决策时考虑启动代价（Robert Haas，Tomas Vondra）§","title":"调整优化器，使其在部分路径决策时考虑启动代价","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["185e30426"],"commit_groups":[["185e30426"]],"commits":["185e30426"],"cves":[],"db_id":"f3d3c220e6026e0eeda7bd6d56f665e5","html":"\u003cp\u003e允许 \u003ca href=\"/docs/19/catalog-pg-aggregate.html\" title=\"52.2. pg_aggregate\"\u003e\u003ccode\u003epg_aggregate\u003c/code\u003e\u003c/a\u003e.\u003ca href=\"/docs/19/catalog-pg-aggregate.html\" title=\"52.2. pg_aggregate\"\u003e\u003ccode\u003eaggtransspace\u003c/code\u003e\u003c/a\u003e 为负值，以表示内存使用没有上限（Richard Guo）\u003ca href=\"https://postgr.es/c/185e30426\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e该信息会被优化器用于规划内存使用。\u003c/p\u003e","id":"19.0-3331d23627fad1b8","identity_text":"Allow negative values of pg_aggregate.aggtransspace to indicate unbounded memory usage (Richard Guo) This information is used by the optimizer in planning memory usage.","part":"changes","patch_ids":["5492488c92f30a827563d46acd1c15ba"],"related_changes":[],"relations":[],"section":"服务器 / 优化器","section_path":["服务器","优化器"],"source_commits":["185e30426"],"source_entry_id":"19.0/changes/019","source_hash":"0c15dfb6a376f19e29ce81b360b538607797f23fa3726050cf2a9f1133f94697","source_url":"/docs/release/19.0/#RELEASE-19-OPTIMIZER","statement_hash":"46976883fce19440f738354918a608956e7c2ca5a90ad03c654003c69efbe7ab","text":"允许 pg_aggregate.aggtransspace 为负值，以表示内存使用没有上限（Richard Guo）§ 该信息会被优化器用于规划内存使用。","title":"允许 pg_aggregate.aggtransspace 为负值，以表示内存使用没有上限","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["2da86c1ef","e484b0eea"],"commit_groups":[["2da86c1ef"],["e484b0eea"]],"commits":["2da86c1ef","e484b0eea"],"cves":[],"db_id":"b1f9f55a512602ec9cd060bc2bc4371e","html":"\u003cp\u003e改进外键约束检查性能（Junwang Zhao，Amit Langote，Chao Li）\u003ca href=\"https://postgr.es/c/2da86c1ef\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/e484b0eea\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-e60811349444510a","identity_text":"Improve performance of foreign key constraint checks (Junwang Zhao, Amit Langote, Chao Li)","part":"changes","patch_ids":["00cf015ee47213a43181fb99b66a0771","f4628d8586bd3ee7fa856a2b048ac468"],"related_changes":[],"relations":[],"section":"服务器 / 常规性能","section_path":["服务器","常规性能"],"source_commits":["2da86c1ef","e484b0eea"],"source_entry_id":"19.0/changes/020","source_hash":"4b1fa21f0dd9a6dc0c815850b02898286ac0f028cce3bf0a783f11095fbaf499","source_url":"/docs/release/19.0/#RELEASE-19-PERFORMANCE","statement_hash":"6721bd85527a6ca1358f80844fdc7e6fed859721c8241c12cec9e382035b32e7","text":"改进外键约束检查性能（Junwang Zhao，Amit Langote，Chao Li）§§","title":"改进外键约束检查性能","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["8ca147d58","a9ee66881","f63ca3379"],"commit_groups":[["8ca147d58"],["a9ee66881"],["f63ca3379"]],"commits":["8ca147d58","a9ee66881","f63ca3379"],"cves":[],"db_id":"b4d4b57a7f99bc9f44ad1314afae429b","html":"\u003cp\u003e改进大请求下\u003ca href=\"/docs/19/runtime-config-resource.html#GUC-IO-METHOD\"\u003e异步 I/O\u003c/a\u003e读预取调度（Andres Freund）\u003ca href=\"https://postgr.es/c/a9ee66881\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/8ca147d58\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/f63ca3379\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-f417f817672bff47","identity_text":"Improve asynchronous I/O read-ahead scheduling for large requests (Andres Freund)","part":"changes","patch_ids":["2072501f14b820f1bfe35915d8b30158","e087def6571d3f6e5a061dae62c2fd7c","fe9957778679eb91b18205b9537edb64"],"related_changes":[],"relations":[],"section":"服务器 / 常规性能","section_path":["服务器","常规性能"],"source_commits":["8ca147d58","a9ee66881","f63ca3379"],"source_entry_id":"19.0/changes/021","source_hash":"387f271f171b23c761d21c0ad07898142ffcb42364770d68d60cc9d395101b9a","source_url":"/docs/release/19.0/#RELEASE-19-PERFORMANCE","statement_hash":"6cfcc165edbe911269bd81960b16bec9e8a30a5f6f44ec922baa64b01873c0ed","text":"改进大请求下异步 I/O读预取调度（Andres Freund）§§§","title":"改进大请求下异步 I/O读预取调度","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["d1c01b79d"],"commit_groups":[["d1c01b79d"]],"commits":["d1c01b79d"],"cves":[],"db_id":"c5e682edb6d0e753a07c754d48223848","html":"\u003cp\u003e允许 \u003ca href=\"/docs/19/runtime-config-resource.html#GUC-IO-METHOD\"\u003e\u003ccode\u003eio_method\u003c/code\u003e\u003c/a\u003e = \"\u003ccode\u003eworker\u003c/code\u003e\" 自动控制所需后台工作进程（Thomas Munro）\u003ca href=\"https://postgr.es/c/d1c01b79d\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e新增服务器变量 \u003ca href=\"/docs/19/runtime-config-resource.html#GUC-IO-MIN-WORKERS\"\u003e\u003ccode\u003eio_min_workers\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/runtime-config-resource.html#GUC-IO-MAX-WORKERS\"\u003e\u003ccode\u003eio_max_workers\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/runtime-config-resource.html#GUC-IO-WORKER-IDLE-TIMEOUT\"\u003e\u003ccode\u003eio_worker_idle_timeout\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/runtime-config-resource.html#GUC-IO-WORKER-LAUNCH-INTERVAL\"\u003e\u003ccode\u003eio_worker_launch_interval\u003c/code\u003e\u003c/a\u003e。\u003c/p\u003e","id":"19.0-1a286e47a7833938","identity_text":"Allow io_method method worker to automatically control needed background workers (Thomas Munro) The new server variables are io_min_workers, io_max_workers, io_worker_idle_timeout, and io_worker_launch_interval.","part":"changes","patch_ids":["a169ee84ddbd574a455365395bab1dc4"],"related_changes":[],"relations":[],"section":"服务器 / 常规性能","section_path":["服务器","常规性能"],"source_commits":["d1c01b79d"],"source_entry_id":"19.0/changes/022","source_hash":"0a9bfdeaf6759e077b7807eee93e8e6e53ab1c3ce3e64d1437c539d72ffb6f32","source_url":"/docs/release/19.0/#RELEASE-19-PERFORMANCE","statement_hash":"33d169ec095b66285e4a86bc4f2e5ede3e62f3090896d379a607543d557df376","text":"允许 io_method = \"worker\" 自动控制所需后台工作进程（Thomas Munro）§ 新增服务器变量 io_min_workers、io_max_workers、io_worker_idle_timeout 和 io_worker_launch_interval。","title":"允许 io_method = \"worker\" 自动控制所需后台工作进程","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["b46e1e54d"],"commit_groups":[["b46e1e54d"]],"commits":["b46e1e54d"],"cves":[],"db_id":"76b13e4c8fc284cc32adc9b29d10b363","html":"\u003cp\u003e允许查询中的表扫描在\u003ca href=\"/docs/19/routine-vacuuming.html#VACUUM-FOR-VISIBILITY-MAP\" title=\"24.1.4. 更新可见性映射\"\u003e可见性映射\u003c/a\u003e中将页面标记为全可见（Melanie Plageman）\u003ca href=\"https://postgr.es/c/b46e1e54d\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此前只有 \u003ca href=\"/docs/19/sql-vacuum.html\" title=\"VACUUM\"\u003e\u003ccode\u003eVACUUM\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/sql-copy.html\" title=\"COPY\"\u003e\u003ccode\u003eCOPY ... FREEZE\u003c/code\u003e\u003c/a\u003e 可以做到这一点。\u003c/p\u003e","id":"19.0-552fbeaf9dd98203","identity_text":"Allow query table scans to mark pages as all-visible in the visibility map (Melanie Plageman) Previously only VACUUM and COPY ... FREEZE could do this.","part":"changes","patch_ids":["6a8f27889e6200ee92a2c2b96e0a1e62"],"related_changes":[],"relations":[],"section":"服务器 / 常规性能","section_path":["服务器","常规性能"],"source_commits":["b46e1e54d"],"source_entry_id":"19.0/changes/023","source_hash":"9273e2b732c863827162b3d04de6d8f12e99b5109b31cd73b73178ec8a593a8b","source_url":"/docs/release/19.0/#RELEASE-19-PERFORMANCE","statement_hash":"f7b21665ddffe4d56df3b384fa639c09064ad5d485c15b1843643bba88575b1e","text":"允许查询中的表扫描在可见性映射中将页面标记为全可见（Melanie Plageman）§ 此前只有 VACUUM 和 COPY ... FREEZE 可以做到这一点。","title":"允许查询中的表扫描在可见性映射中将页面标记为全可见","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["1ff3180ca","2a3d2f9f6"],"commit_groups":[["1ff3180ca"],["2a3d2f9f6"]],"commits":["1ff3180ca","2a3d2f9f6"],"cves":[],"db_id":"0d35219da77f982b814f937702009bc4","html":"\u003cp\u003e允许\u003ca href=\"/docs/19/routine-vacuuming.html#AUTOVACUUM\" title=\"24.1.6. 自动清理守护进程\"\u003e自动清理\u003c/a\u003e使用\u003ca href=\"/docs/19/sql-createtable.html#RELOPTION-AUTOVACUUM-PARALLEL-WORKERS\"\u003e\u003ccode\u003e并行自动清理工作进程\u003c/code\u003e\u003c/a\u003e（Daniil Davydov）\u003ca href=\"https://postgr.es/c/1ff3180ca\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/2a3d2f9f6\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e工作进程的最大数量由服务器变量 \u003ca href=\"/docs/19/runtime-config-vacuum.html#GUC-AUTOVACUUM-MAX-PARALLEL-WORKERS\"\u003e\u003ccode\u003eautovacuum_max_parallel_workers\u003c/code\u003e\u003c/a\u003e 和每表存储参数 \u003ccode\u003eautovacuum_parallel_workers\u003c/code\u003e 控制。\u003c/p\u003e","id":"19.0-d02b208d03c2469f","identity_text":"Allow autovacuum to use parallel autovacuum workers (Daniil Davydov) The maximum number of workers is controlled by server variable autovacuum_max_parallel_workers and per-table storage parameter autovacuum_parallel_workers.","part":"changes","patch_ids":["d00bb448799a8e00977cd00e9bf68cfc","e7ff818d9fede0e1f491e0948f7bf314"],"related_changes":[],"relations":[],"section":"服务器 / 常规性能","section_path":["服务器","常规性能"],"source_commits":["1ff3180ca","2a3d2f9f6"],"source_entry_id":"19.0/changes/024","source_hash":"08cc8f291983d4a09b820ae5af6e83c5ad36422f0a9e2ba758dcf31316c34dda","source_url":"/docs/release/19.0/#RELEASE-19-PERFORMANCE","statement_hash":"20d308cd68e961bab7637b3cd372a4abdc0257b9ce19be99488cf441e1c53b74","text":"允许自动清理使用并行自动清理工作进程（Daniil Davydov）§§ 工作进程的最大数量由服务器变量 autovacuum_max_parallel_workers 和每表存储参数 autovacuum_parallel_workers 控制。","title":"允许自动清理使用并行自动清理工作进程","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["0ca3b1697"],"commit_groups":[["0ca3b1697"]],"commits":["0ca3b1697"],"cves":[],"db_id":"7c3eedfe04103a4350c1c749f105b5d3","html":"\u003cp\u003e允许 \u003ca href=\"/docs/19/datatype-oid.html\" title=\"8.19. 对象标识符类型\"\u003e\u003ccode\u003eTID\u003c/code\u003e\u003c/a\u003e 范围扫描并行执行（Cary Huang，David Rowley）\u003ca href=\"https://postgr.es/c/0ca3b1697\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-11c70cb05f85d692","identity_text":"Allow TID Range Scans to be parallelized (Cary Huang, David Rowley)","part":"changes","patch_ids":["7d9994e362750e4bcfdb237f48d39ad0"],"related_changes":[],"relations":[],"section":"服务器 / 常规性能","section_path":["服务器","常规性能"],"source_commits":["0ca3b1697"],"source_entry_id":"19.0/changes/025","source_hash":"918f82ee3ea04c6a8849f3ae4cd14b49af4f4aa3425b9fef00f6a50f7543e71e","source_url":"/docs/release/19.0/#RELEASE-19-PERFORMANCE","statement_hash":"7152ed59ec02612602e221661cc104efc7e6a70fcc85a8a34f9ef6bac4c337da","text":"允许 TID 范围扫描并行执行（Cary Huang，David Rowley）§","title":"允许 TID 范围扫描并行执行","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["e0a3a3fd5"],"commit_groups":[["e0a3a3fd5"]],"commits":["e0a3a3fd5"],"cves":[],"db_id":"45aec4e1ec99e2006c53a4a19c340728","html":"\u003cp\u003e使用 \u003cacronym\u003eSIMD\u003c/acronym\u003e CPU 指令提升 \u003ca href=\"/docs/19/sql-copy.html\" title=\"COPY\"\u003e\u003ccode\u003eCOPY FROM\u003c/code\u003e\u003c/a\u003e 处理文本和 \u003cacronym\u003eCSV\u003c/acronym\u003e 输入的性能（Nazir Bilal Yavuz，Shinya Kato）\u003ca href=\"https://postgr.es/c/e0a3a3fd5\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-b1723e951085af50","identity_text":"Improve COPY FROM performance for text and CSV input using SIMD CPU instructions (Nazir Bilal Yavuz, Shinya Kato)","part":"changes","patch_ids":["7c26e1aeba8ab71718c7ba308657e115"],"related_changes":[],"relations":[],"section":"服务器 / 常规性能","section_path":["服务器","常规性能"],"source_commits":["e0a3a3fd5"],"source_entry_id":"19.0/changes/026","source_hash":"861106e022a1790aa6ba93ac6e264c93e0c4aa74ee673d0a357f2c0b381127aa","source_url":"/docs/release/19.0/#RELEASE-19-PERFORMANCE","statement_hash":"7589e7db24f5e61f7e42a40c7d945736722c212686b401443969a3bdde2d3193","text":"使用 SIMD CPU 指令提升 COPY FROM 处理文本和 CSV 输入的性能（Nazir Bilal Yavuz，Shinya Kato）§","title":"使用 SIMD CPU 指令提升 COPY FROM 处理文本和 CSV 输入的性能","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["282b1cde9"],"commit_groups":[["282b1cde9"]],"commits":["282b1cde9"],"cves":[],"db_id":"740592d064a218404af7794a0ce22ef9","html":"\u003cp\u003e改进 \u003ca href=\"/docs/19/sql-notify.html\" title=\"NOTIFY\"\u003e\u003ccode\u003eNOTIFY\u003c/code\u003e\u003c/a\u003e，使其只唤醒正在监听指定通知的后端（Joel Jacobson）\u003ca href=\"https://postgr.es/c/282b1cde9\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此前大多数后端都会被 \u003ca href=\"/docs/19/sql-notify.html\" title=\"NOTIFY\"\u003e\u003ccode\u003eNOTIFY\u003c/code\u003e\u003c/a\u003e 唤醒。\u003c/p\u003e","id":"19.0-74f15db550e51aa0","identity_text":"Improve NOTIFY to only wake up backends that are listening to specified notifications (Joel Jacobson) Previously most backends were woken by NOTIFY.","part":"changes","patch_ids":["69192acbcef0c7cc8306f425878ffcd1"],"related_changes":[],"relations":[],"section":"服务器 / 常规性能","section_path":["服务器","常规性能"],"source_commits":["282b1cde9"],"source_entry_id":"19.0/changes/027","source_hash":"df21472d59db9cf0b82f24566eea1c581540d88262bf11418b8f74e2df43dd44","source_url":"/docs/release/19.0/#RELEASE-19-PERFORMANCE","statement_hash":"5cdbf10e4e6459c3301ea94f1ad2a26d4796c69d3bc8738282269937d109dd09","text":"改进 NOTIFY，使其只唤醒正在监听指定通知的后端（Joel Jacobson）§ 此前大多数后端都会被 NOTIFY 唤醒。","title":"改进 NOTIFY，使其只唤醒正在监听指定通知的后端","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["5838806ce"],"commit_groups":[["5838806ce"]],"commits":["5838806ce"],"cves":[],"db_id":"e8b8f569bd0fb639a31dc56b11694455","html":"\u003cp\u003e将 \u003ca href=\"/docs/19/runtime-config-wal.html#GUC-WAL-COMPRESSION\"\u003e\u003ccode\u003ewal_compression\u003c/code\u003e\u003c/a\u003e 等于 \u003ccode\u003eon\u003c/code\u003e 时的行为改为使用可用的最佳 WAL 压缩方法（wenhui qiu）\u003ca href=\"https://postgr.es/c/5838806ce\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此前始终使用 \u003ccode\u003epglz\u003c/code\u003e。\u003c/p\u003e","id":"19.0-adac5ed1f8101e89","identity_text":"Change wal_compression equals on to use the best WAL compression method available (wenhui qiu) Previously this always used pglz.","part":"changes","patch_ids":["dd17331bcd4d09ddee436f175a988bf0"],"related_changes":[],"relations":[],"section":"服务器 / 常规性能","section_path":["服务器","常规性能"],"source_commits":["5838806ce"],"source_entry_id":"19.0/changes/028","source_hash":"aba2eb3f517338208c84699f266e4df29998ad5c20b0b06c14325b7218dee683","source_url":"/docs/release/19.0/#RELEASE-19-PERFORMANCE","statement_hash":"6d23e95d15eb514f2c8a4fd77247d4901de44495448847d7876f3406ef645d9c","text":"将 wal_compression 等于 on 时的行为改为使用可用的最佳 WAL 压缩方法（wenhui qiu）§ 此前始终使用 pglz。","title":"将 wal_compression 等于 on 时的行为改为使用可用的最佳 WAL 压缩方法","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["34dfca293"],"commit_groups":[["34dfca293"]],"commits":["34dfca293"],"cves":[],"db_id":"7be022908421d8c0bc76e88a85d61f08","html":"\u003cp\u003e将 \u003ca href=\"/docs/19/storage-toast.html\" title=\"66.2. TOAST\"\u003e\u003cacronym\u003eTOAST\u003c/acronym\u003e\u003c/a\u003e 压缩默认方法从 \u003ccode\u003epglz\u003c/code\u003e 改为更高效的 \u003ccode\u003elz4\u003c/code\u003e（Euler Taveira）\u003ca href=\"https://postgr.es/c/34dfca293\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e通过修改服务器变量 \u003ca href=\"/docs/19/runtime-config-client.html#GUC-DEFAULT-TOAST-COMPRESSION\"\u003e\u003ccode\u003edefault_toast_compression\u003c/code\u003e\u003c/a\u003e 的默认值实现。\u003c/p\u003e","id":"19.0-f9faf33f2e42f662","identity_text":"Change the default TOAST compression method from pglz to the more efficient lz4 (Euler Taveira) This is done by changing the default for server variable default_toast_compression.","part":"changes","patch_ids":["bc9f523e595d44cb2f23bf171fd8252e"],"related_changes":[],"relations":[],"section":"服务器 / 常规性能","section_path":["服务器","常规性能"],"source_commits":["34dfca293"],"source_entry_id":"19.0/changes/029","source_hash":"b88ef72eb13e9528daa12b0f19ac0801bd11b0aed4868c5689f961b303474e4b","source_url":"/docs/release/19.0/#RELEASE-19-PERFORMANCE","statement_hash":"539bef1bd8c30f8c6cd23968ebfa3e8c836fd4a0051075fc361a1b1574e36f0b","text":"将 TOAST 压缩默认方法从 pglz 改为更高效的 lz4（Euler Taveira）§ 通过修改服务器变量 default_toast_compression 的默认值实现。","title":"将 TOAST 压缩默认方法从 pglz 改为更高效的 lz4","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["c456e3911"],"commit_groups":[["c456e3911"]],"commits":["c456e3911"],"cves":[],"db_id":"2f44033f40c98ee6a912c206532f6743","html":"\u003cp\u003e改进内部行展开性能（David Rowley）\u003ca href=\"https://postgr.es/c/c456e3911\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-4790bea65d4b1b64","identity_text":"Improve performance of internal row deformation (David Rowley)","part":"changes","patch_ids":["2fb9e9b84098734ad1a8377076eb1c47"],"related_changes":[],"relations":[],"section":"服务器 / 常规性能","section_path":["服务器","常规性能"],"source_commits":["c456e3911"],"source_entry_id":"19.0/changes/030","source_hash":"e33ca61d27b34df73309428a3e161efa1d449ee1044142dba15d9d538241ec2b","source_url":"/docs/release/19.0/#RELEASE-19-PERFORMANCE","statement_hash":"1e8e65e0cb1dcba0aa0c3976cbd782de234996f92acb56d493eea9b3f4ad1817","text":"改进内部行展开性能（David Rowley）§","title":"改进内部行展开性能","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["c4ff35f10"],"commit_groups":[["c4ff35f10"]],"commits":["c4ff35f10"],"cves":[],"db_id":"1910f331f0c069a5c4fed4524f4347c2","html":"\u003cp\u003e改进重复执行 \u003cacronym\u003eUTF-8\u003c/acronym\u003e 大小写折叠操作的性能（Andreas Karlsson）\u003ca href=\"https://postgr.es/c/c4ff35f10\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-395cf0cc621146d2","identity_text":"Improve performance of repeated UTF-8 case-folding operations (Andreas Karlsson)","part":"changes","patch_ids":["ae87a7eb7068ebcf4d1d2b57fc639c7c"],"related_changes":[],"relations":[],"section":"服务器 / 常规性能","section_path":["服务器","常规性能"],"source_commits":["c4ff35f10"],"source_entry_id":"19.0/changes/031","source_hash":"db8fbfa4cae3f4ce9ea41e2d7646f765107a8c90c00b50a26b5ab10d56937494","source_url":"/docs/release/19.0/#RELEASE-19-PERFORMANCE","statement_hash":"9e3af8a44d0dedeb1741e935ea02b4dcc4de7cf406fe2bfb5e5b1435a115b5e0","text":"改进重复执行 UTF-8 大小写折叠操作的性能（Andreas Karlsson）§","title":"改进重复执行 UTF-8 大小写折叠操作的性能","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["6c228755a","bfa3c4f10"],"commit_groups":[["6c228755a"],["bfa3c4f10"]],"commits":["6c228755a","bfa3c4f10"],"cves":[],"db_id":"1ed1f0b5b015c26ff52c733bbcedbaa2","html":"\u003cp\u003e使用流式读取改进 hash 索引批量删除和 \u003ca href=\"/docs/19/gin.html\" title=\"65.4. GIN 索引\"\u003e\u003ccode\u003eGIN\u003c/code\u003e\u003c/a\u003e 索引清理的性能（Xuneng Zhou）\u003ca href=\"https://postgr.es/c/bfa3c4f10\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/6c228755a\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-8bab904eae83bd1e","identity_text":"Improve performance of hash index bulk-deletion and GIN index vacuuming using streaming reads (Xuneng Zhou)","part":"changes","patch_ids":["84df054e8c1e0c6d9cb21616a9603f21","9bbf9f028b97b0ec01a849288c885031"],"related_changes":[],"relations":[],"section":"服务器 / 常规性能","section_path":["服务器","常规性能"],"source_commits":["6c228755a","bfa3c4f10"],"source_entry_id":"19.0/changes/032","source_hash":"22dc347e00791c8cd097d440c9a650b0d9254cd0cdb4cd2305424237995540dd","source_url":"/docs/release/19.0/#RELEASE-19-PERFORMANCE","statement_hash":"8739a01f6a76fc5153326e7601d455c0e78e7547b96bd1f198775b7b537f56f3","text":"使用流式读取改进 hash 索引批量删除和 GIN 索引清理的性能（Xuneng Zhou）§ §","title":"使用流式读取改进 hash 索引批量删除和 GIN 索引清理的性能","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["ef3c3cf6d"],"commit_groups":[["ef3c3cf6d"]],"commits":["ef3c3cf6d"],"cves":[],"db_id":"e92f77f792175055754151b811c7e66f","html":"\u003cp\u003e使用基数排序改进排序性能（John Naylor）\u003ca href=\"https://postgr.es/c/ef3c3cf6d\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-3249f6c7511a5af6","identity_text":"Improve sort performance using radix sort (John Naylor)","part":"changes","patch_ids":["e549bc058c224184a36dddee5ed0274a"],"related_changes":[],"relations":[],"section":"服务器 / 常规性能","section_path":["服务器","常规性能"],"source_commits":["ef3c3cf6d"],"source_entry_id":"19.0/changes/033","source_hash":"053bf7d1a7a9e0349a991795e9476aaf1a1d59d2c0987e3bd5b973099c87cc5a","source_url":"/docs/release/19.0/#RELEASE-19-PERFORMANCE","statement_hash":"1e58055dc676b28011576896b1a0c5617750d18c1bc9d507b6607e36ed2e726f","text":"使用基数排序改进排序性能（John Naylor）§","title":"使用基数排序改进排序性能","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["16fca4825","294520c44"],"commit_groups":[["16fca4825"],["294520c44"]],"commits":["16fca4825","294520c44"],"cves":[],"db_id":"a83a0fc0f22b72a243cc7f01e5ad26bd","html":"\u003cp\u003e改进计时性能测量（Lukas Fittl、Andres Freund、David Geier）\u003ca href=\"https://postgr.es/c/294520c44\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/16fca4825\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这有利于 \u003ca href=\"/docs/19/sql-explain.html\" title=\"EXPLAIN\"\u003e\u003ccode\u003eEXPLAIN (ANALYZE, TIMING)\u003c/code\u003e\u003c/a\u003e 和\u003ca href=\"/docs/19/pgtesttiming.html\" title=\"pg_test_timing\"\u003e\u003cspan\u003epg_test_timing\u003c/span\u003e\u003c/a\u003e，并由服务器变量 \u003ca href=\"/docs/19/runtime-config-resource.html#GUC-TIMING-CLOCK-SOURCE\"\u003e\u003ccode\u003etiming_clock_source\u003c/code\u003e\u003c/a\u003e 控制。\u003c/p\u003e","id":"19.0-cd84e486027cb3ba","identity_text":"Improve timing performance measurements (Lukas Fittl, Andres Freund, David Geier) This benefits EXPLAIN (ANALYZE, TIMING) and pg_test_timing, and is controlled via server variable timing_clock_source.","part":"changes","patch_ids":["044cc323577cc5c4ab019ae421fcef93","17be2bf9f9491bba9792f2204daac4e2"],"related_changes":[],"relations":[],"section":"服务器 / 常规性能","section_path":["服务器","常规性能"],"source_commits":["16fca4825","294520c44"],"source_entry_id":"19.0/changes/034","source_hash":"e26c03be8a2498ef24139bd777cd064eaf8931a86634dac1da1c142a30e3de04","source_url":"/docs/release/19.0/#RELEASE-19-PERFORMANCE","statement_hash":"7111ea49b63b8a127f7b829866f597d67366f4dac2b861092e418abd1b5eacca","text":"改进计时性能测量（Lukas Fittl、Andres Freund、David Geier）§§ 这有利于 EXPLAIN (ANALYZE, TIMING) 和pg_test_timing，并由服务器变量 timing_clock_source 控制。","title":"改进计时性能测量","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["ce8d5fe0e"],"commit_groups":[["ce8d5fe0e"]],"commits":["ce8d5fe0e"],"cves":[],"db_id":"4d225e8d71194b0baf4576a57c89ab79","html":"\u003cp\u003e优化\u003ca href=\"/docs/19/plpgsql.html\" title=\"第 41 章 PL/pgSQL — SQL 过程语言\"\u003e\u003cspan\u003eplpgsql\u003c/span\u003e\u003c/a\u003e语法 \u003ccode\u003eSELECT simple-expression INTO\u003c/code\u003e \u003cem\u003e\u003ccode\u003evar\u003c/code\u003e\u003c/em\u003e（Tom Lane）\u003ca href=\"https://postgr.es/c/ce8d5fe0e\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-bf3b7d599cc4c9b7","identity_text":"Optimize plpgsql syntax SELECT simple-expression INTO var (Tom Lane)","part":"changes","patch_ids":["cd90e593838a9a8b99f37f022aa98785"],"related_changes":[],"relations":[],"section":"服务器 / 常规性能","section_path":["服务器","常规性能"],"source_commits":["ce8d5fe0e"],"source_entry_id":"19.0/changes/035","source_hash":"a7328fdab461c4a7f5765f22692be28bd8444c4ebc98090a9006fa9fcdfe017a","source_url":"/docs/release/19.0/#RELEASE-19-PERFORMANCE","statement_hash":"9a10d3f3b495e42819480723274145cddba7d6c1c40840d9c022fd9f3e77a500","text":"优化plpgsql语法 SELECT simple-expression INTO var（Tom Lane）§","title":"优化plpgsql语法 SELECT simple-expression INTO var","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["4019f725f"],"commit_groups":[["4019f725f"]],"commits":["4019f725f"],"cves":[],"db_id":"cbe2559482ddfa2aac4eadad6b946745","html":"\u003cp\u003e新增系统视图 \u003ca href=\"/docs/19/monitoring-stats.html#PG-STAT-LOCK-VIEW\" title=\"表 27.25. pg_stat_lock 视图\"\u003e\u003ccode\u003epg_stat_lock\u003c/code\u003e\u003c/a\u003e 和函数 \u003ca href=\"/docs/19/monitoring-stats.html#MONITORING-PG-STAT-LOCK-VIEW\" title=\"27.2.15. pg_stat_lock\"\u003e\u003ccode\u003epg_stat_get_lock()\u003c/code\u003e\u003c/a\u003e，用于报告每种锁类型的统计信息（Bertrand Drouvot）\u003ca href=\"https://postgr.es/c/4019f725f\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-7eab7e5c5f2203f0","identity_text":"Add system view pg_stat_lock and function pg_stat_get_lock() to report per-lock-type statistics (Bertrand Drouvot)","part":"changes","patch_ids":["03976a5a4c07338afa4fc0ae987faf36"],"related_changes":[],"relations":[],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["4019f725f"],"source_entry_id":"19.0/changes/036","source_hash":"37efdb27ab007ade80935ccaea7356ddd09826bbd3ce38aa55146629a022e581","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"4c2f5fb37b196485646d5b56fe524181d9b5d5a77b18be93c2eb7d8d9d2a7621","text":"新增系统视图 pg_stat_lock 和函数 pg_stat_get_lock()，用于报告每种锁类型的统计信息（Bertrand Drouvot）§","title":"新增系统视图 pg_stat_lock 和函数 pg_stat_get_lock()，用于报告每种锁类型的统计信息","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["01d485b14","2d4ead6f4"],"commit_groups":[["01d485b14"],["2d4ead6f4"]],"commits":["01d485b14","2d4ead6f4"],"cves":[],"db_id":"c3ccf79bde29fe3f2a6585993778288e","html":"\u003cp\u003e新增系统视图 \u003ca href=\"/docs/19/monitoring-stats.html#PG-STAT-RECOVERY-VIEW\" title=\"表 27.17. pg_stat_recovery 视图\"\u003e\u003ccode\u003epg_stat_recovery\u003c/code\u003e\u003c/a\u003e，用于报告恢复状态（Xuneng Zhou，Shinya Kato）\u003ca href=\"https://postgr.es/c/01d485b14\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/2d4ead6f4\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-2dc9324572e0e9bd","identity_text":"Add system view pg_stat_recovery to report recovery status (Xuneng Zhou, Shinya Kato)","part":"changes","patch_ids":["6c47e71ee584566e1cdb6e6915ba46e7","8de33246b266e818b5e8222fb7036aac"],"related_changes":[],"relations":[],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["01d485b14","2d4ead6f4"],"source_entry_id":"19.0/changes/037","source_hash":"37d67636bdd05f427f9dd03cdff499a490caff9af499fac2e73b3342b6bdebf2","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"a312179476848e405d3eec1ec3f1b961060cdb77b82ace73eadf06d15dd2704a","text":"新增系统视图 pg_stat_recovery，用于报告恢复状态（Xuneng Zhou，Shinya Kato）§§","title":"新增系统视图 pg_stat_recovery，用于报告恢复状态","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["87f61f0c8"],"commit_groups":[["87f61f0c8"]],"commits":["87f61f0c8"],"cves":[],"db_id":"d276cd666e065e08277d26a8fb7a03c9","html":"\u003cp\u003e新增系统视图 \u003ca href=\"/docs/19/monitoring-stats.html#PG-STAT-AUTOVACUUM-SCORES-VIEW\" title=\"表 27.32. pg_stat_autovacuum_scores 视图\"\u003e\u003ccode\u003epg_stat_autovacuum_scores\u003c/code\u003e\u003c/a\u003e，用于报告每表\u003ca href=\"/docs/19/routine-vacuuming.html#AUTOVACUUM\" title=\"24.1.6. 自动清理守护进程\"\u003e自动清理\u003c/a\u003e细节（Sami Imseih）\u003ca href=\"https://postgr.es/c/87f61f0c8\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-fdff1e49427bb3a5","identity_text":"Add system view pg_stat_autovacuum_scores to report per-table autovacuum details (Sami Imseih)","part":"changes","patch_ids":["d450bec36782c81f2954fd59737e1b76"],"related_changes":[],"relations":[],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["87f61f0c8"],"source_entry_id":"19.0/changes/038","source_hash":"a678ad181bdebb8c940d335eebc166e6c276977bd45c033617fa8b96195b825e","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"5b2fafd5b31336ec04a99dd9300d4f02447b330a666d12cdde0d0ab82cda8b4f","text":"新增系统视图 pg_stat_autovacuum_scores，用于报告每表自动清理细节（Sami Imseih）§","title":"新增系统视图 pg_stat_autovacuum_scores，用于报告每表自动清理细节","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["167ed8082","f894acb24"],"commit_groups":[["167ed8082"],["f894acb24"]],"commits":["167ed8082","f894acb24"],"cves":[],"db_id":"8d5c14fd4c3bc12fb519c4510b35f42c","html":"\u003cp\u003e新增系统视图 \u003ca href=\"/docs/19/view-pg-dsm-registry-allocations.html\" title=\"53.8. pg_dsm_registry_allocations\"\u003e\u003ccode\u003epg_dsm_registry_allocations\u003c/code\u003e\u003c/a\u003e，用于报告\u003ca href=\"/docs/19/runtime-config-resource.html#GUC-DYNAMIC-SHARED-MEMORY-TYPE\"\u003e动态共享内存\u003c/a\u003e细节（Florents Tselai，Nathan Bossart）\u003ca href=\"https://postgr.es/c/167ed8082\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/f894acb24\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-4eda824cbd18c741","identity_text":"Add system view pg_dsm_registry_allocations to report dynamic shared memory details (Florents Tselai, Nathan Bossart)","part":"changes","patch_ids":["060c65df4ae439e5472616eec5529041","c4785fc6a14fe381b6b90b2cef4ee762"],"related_changes":[],"relations":[],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["167ed8082","f894acb24"],"source_entry_id":"19.0/changes/039","source_hash":"743de4c0c002fc4d25f4eef8f59d8c0468cf8ba628bef172a5ab979be42b2437","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"119d2154117d747839a9b58b3105a16e1269592a95c0bc1c2fdbe60b8de77eec","text":"新增系统视图 pg_dsm_registry_allocations，用于报告动态共享内存细节（Florents Tselai，Nathan Bossart）§§","title":"新增系统视图 pg_dsm_registry_allocations，用于报告动态共享内存细节","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["0d7895206"],"commit_groups":[["0d7895206"]],"commits":["0d7895206"],"cves":[],"db_id":"597e42cd38d0142a7294cfc00b0ea553","html":"\u003cp\u003e在系统视图 \u003ca href=\"/docs/19/progress-reporting.html#PG-STAT-PROGRESS-VACUUM-VIEW\" title=\"表 27.50. pg_stat_progress_vacuum 视图\"\u003e\u003ccode\u003epg_stat_progress_vacuum\u003c/code\u003e\u003c/a\u003e 中新增清理启动细节（Shinya Kato）\u003ca href=\"https://postgr.es/c/0d7895206\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e新的 \u003ccode\u003estarted_by\u003c/code\u003e 列报告清理的发起者，\u003ccode\u003emode\u003c/code\u003e 则表示其激进程度。\u003c/p\u003e","id":"19.0-2022d52df786edbf","identity_text":"Add vacuum initiation details to system view pg_stat_progress_vacuum (Shinya Kato) The new started_by column reports the initiator of the vacuum, and mode indicates its aggressiveness.","part":"changes","patch_ids":["4ceb582980f8563371f6a0af79a43561"],"related_changes":[],"relations":[],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["0d7895206"],"source_entry_id":"19.0/changes/040","source_hash":"08b41e29b56616a89d15fdda018887ee63aa2468db1b971948c92c2797fcf67b","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"0c2fe2ec3463ea493c65bc087b8c40e071a68217606d0ae0ad7660a5d3ee1c2b","text":"在系统视图 pg_stat_progress_vacuum 中新增清理启动细节（Shinya Kato）§ 新的 started_by 列报告清理的发起者，mode 则表示其激进程度。","title":"在系统视图 pg_stat_progress_vacuum 中新增清理启动细节","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["ab40db385"],"commit_groups":[["ab40db385"]],"commits":["ab40db385"],"cves":[],"db_id":"83371b692e03bed12c01afb91f634c59","html":"\u003cp\u003e在系统视图 \u003ca href=\"/docs/19/progress-reporting.html#PG-STAT-PROGRESS-ANALYZE-VIEW\" title=\"表 27.41. pg_stat_progress_analyze 视图\"\u003e\u003ccode\u003epg_stat_progress_analyze\u003c/code\u003e\u003c/a\u003e 中新增分析启动细节（Shinya Kato）\u003ca href=\"https://postgr.es/c/ab40db385\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e新的 \u003ccode\u003estarted_by\u003c/code\u003e 列报告分析的发起者。\u003c/p\u003e","id":"19.0-f32a113de8b8698c","identity_text":"Add analyze initiation details to system view pg_stat_progress_analyze (Shinya Kato) The new started_by column reports the initiator of the analyze.","part":"changes","patch_ids":["85a304775ef09a3db732c65c90dbb93c"],"related_changes":[],"relations":[],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["ab40db385"],"source_entry_id":"19.0/changes/041","source_hash":"295f6c0e94da76415499091ec783deb623ba17d901e9405b783f275b58078e68","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"0ae5046ad3625b53619771311a85697633bcb03d86d8b3422e09717bd8d2639d","text":"在系统视图 pg_stat_progress_analyze 中新增分析启动细节（Shinya Kato）§ 新的 started_by 列报告分析的发起者。","title":"在系统视图 pg_stat_progress_analyze 中新增分析启动细节","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["d3b6183dd"],"commit_groups":[["d3b6183dd"]],"commits":["d3b6183dd"],"cves":[],"db_id":"a948b3c31c4bf7a7079ca074363c24ec","html":"\u003cp\u003e新增 \u003ccode\u003emem_exceeded_count\u003c/code\u003e 列到系统视图 \u003ca href=\"/docs/19/monitoring-stats.html#PG-STAT-REPLICATION-SLOTS-VIEW\" title=\"表 27.15. pg_stat_replication_slots 视图\"\u003e\u003ccode\u003epg_stat_replication_slots\u003c/code\u003e\u003c/a\u003e（Bertrand Drouvot）\u003ca href=\"https://postgr.es/c/d3b6183dd\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e它用于报告 \u003ca href=\"/docs/19/runtime-config-resource.html#GUC-LOGICAL-DECODING-WORK-MEM\"\u003e\u003ccode\u003elogical_decoding_work_mem\u003c/code\u003e\u003c/a\u003e 被超过的次数。\u003c/p\u003e","id":"19.0-fb858df928861e81","identity_text":"Add mem_exceeded_count column to system view pg_stat_replication_slots (Bertrand Drouvot) This reports the number of times that logical_decoding_work_mem was exceeded.","part":"changes","patch_ids":["bab99a2ad0f86c4e3fe094c15a2628d6"],"related_changes":[],"relations":[],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["d3b6183dd"],"source_entry_id":"19.0/changes/042","source_hash":"cd6ff3d1ae5cce3e471706a1f8c90ba383913fb149a5da203542c8a21605535b","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"95592ae4253188ff868760c27a10b1d1a8699d3fb22bb5ab2e0b3d025ab1435f","text":"新增 mem_exceeded_count 列到系统视图 pg_stat_replication_slots（Bertrand Drouvot）§ 它用于报告 logical_decoding_work_mem 被超过的次数。","title":"新增 mem_exceeded_count 列到系统视图 pg_stat_replication_slots","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["5db6a344a","76b78721c","e68b6adad"],"commit_groups":[["5db6a344a"],["76b78721c"],["e68b6adad"]],"commits":["5db6a344a","76b78721c","e68b6adad"],"cves":[],"db_id":"33312541b869a3ced60958b7fac86cfd","html":"\u003cp\u003e在 \u003ca href=\"/docs/19/monitoring-stats.html#PG-STAT-REPLICATION-SLOTS-VIEW\" title=\"表 27.15. pg_stat_replication_slots 视图\"\u003e\u003ccode\u003epg_stat_replication_slots\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/view-pg-replication-slots.html\" title=\"53.22. pg_replication_slots\"\u003e\u003ccode\u003epg_replication_slots\u003c/code\u003e\u003c/a\u003e 中新增复制槽同步跳过信息（Shlok Kyal）\u003ca href=\"https://postgr.es/c/76b78721c\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/e68b6adad\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/5db6a344a\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e新增列为 \u003ccode\u003eslotsync_skip_count\u003c/code\u003e、\u003ccode\u003eslotsync_last_skip\u003c/code\u003e 和 \u003ccode\u003eslotsync_skip_reason\u003c/code\u003e。\u003c/p\u003e","id":"19.0-3e489f75bc72adde","identity_text":"Add slot synchronization skip information to pg_stat_replication_slots and pg_replication_slots (Shlok Kyal) The new columns are slotsync_skip_count, slotsync_last_skip, and slotsync_skip_reason.","part":"changes","patch_ids":["2a7b52fc9cc0f09a034684e0e8729874","3f9abdfe57a57258c11ccd012d52f696","79aef1d91f4c48cc5dc9d3fbdf73d16b"],"related_changes":[],"relations":[],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["5db6a344a","76b78721c","e68b6adad"],"source_entry_id":"19.0/changes/043","source_hash":"d8925eb2bfe689f63e69e6dae4f48d8b75956d2bfac70bec609edde9645fd958","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"60dfecd88c78ab30c21adbfd57195484a37caeb6244ae6caa9b12c827cdbe934","text":"在 pg_stat_replication_slots 和 pg_replication_slots 中新增复制槽同步跳过信息（Shlok Kyal）§§§ 新增列为 slotsync_skip_count、slotsync_last_skip 和 slotsync_skip_reason。","title":"在 pg_stat_replication_slots 和 pg_replication_slots 中新增复制槽同步跳过信息","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["fd5a1a0c3"],"commit_groups":[["fd5a1a0c3"]],"commits":["fd5a1a0c3"],"cves":[],"db_id":"f89a6e0c5a92f39d190d76e75a70f8a7","html":"\u003cp\u003e新增 \u003ccode\u003eupdate_deleted\u003c/code\u003e 列到系统视图 \u003ca href=\"/docs/19/monitoring-stats.html#MONITORING-PG-STAT-SUBSCRIPTION-STATS\" title=\"27.2.10. pg_stat_subscription_stats\"\u003e\u003ccode\u003epg_stat_subscription_stats\u003c/code\u003e\u003c/a\u003e（Zhijie Hou）\u003ca href=\"https://postgr.es/c/fd5a1a0c3\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e该列报告因并发删除而忽略更新的行数。这要求订阅者启用 \u003ccode\u003eretain_dead_tuples\u003c/code\u003e。\u003c/p\u003e","id":"19.0-e92035bd8571211b","identity_text":"Add update_deleted column to system view pg_stat_subscription_stats (Zhijie Hou) This reports the number of rows where updates were ignored due to concurrent deletes. This requires the subscriber have retain_dead_tuples enabled.","part":"changes","patch_ids":["37275251cc82b9be0c185ced82ebe5d1"],"related_changes":[],"relations":[],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["fd5a1a0c3"],"source_entry_id":"19.0/changes/044","source_hash":"eac82733178f8d7d2986eda92cbd034efffab1d4ee8f03d308bcac6f716879c7","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"2f7dca5ad2be2e9b0291ba662276ebf16720d5ebbec006b272a0b9d0f4cc6a10","text":"新增 update_deleted 列到系统视图 pg_stat_subscription_stats（Zhijie Hou）§ 该列报告因并发删除而忽略更新的行数。这要求订阅者启用 retain_dead_tuples。","title":"新增 update_deleted 列到系统视图 pg_stat_subscription_stats","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["3edaf29fa","f6a4c498d"],"commit_groups":[["3edaf29fa"],["f6a4c498d"]],"commits":["3edaf29fa","f6a4c498d"],"cves":[],"db_id":"9a6f7f73dea73507b7e7d161044aa58a","html":"\u003cp\u003e新增 \u003ccode\u003esync_seq_error_count\u003c/code\u003e 列到系统视图 \u003ca href=\"/docs/19/monitoring-stats.html#PG-STAT-SUBSCRIPTION-STATS\" title=\"表 27.20. pg_stat_subscription_stats 视图\"\u003e\u003ccode\u003epg_stat_subscription_stats\u003c/code\u003e\u003c/a\u003e，用于报告序列同步错误（Vignesh C）\u003ca href=\"https://postgr.es/c/f6a4c498d\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/3edaf29fa\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-1e43385099e277ba","identity_text":"Add sync_seq_error_count column to system view pg_stat_subscription_stats to report sequence synchronization errors (Vignesh C)","part":"changes","patch_ids":["612943743e97964090c65bd7f4cdedca","b5c7665c4c4526a9da93257182f99c1e"],"related_changes":[{"db_id":"70cd59be0b3b3c22c3c028193c91e416","evidence":{"patch_ids":["612943743e97964090c65bd7f4cdedca"],"same_day":false},"kind":"related","label":"19beta4","source_url":"/docs/release/19.0/#RELEASE-19-MIGRATION","title":"将 sync_error_count 重命名为 sync_table_error_count，该列位于系统视图 pg_stat_subscription_stats 中","url":"/docs/compare/?release=19.0#19.0-b1c1710fd414582c","version":"19.0"}],"relations":[{"evidence":{"patch_ids":["612943743e97964090c65bd7f4cdedca"],"same_day":false},"rule":2,"target":"70cd59be0b3b3c22c3c028193c91e416","type":"related"}],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["3edaf29fa","f6a4c498d"],"source_entry_id":"19.0/changes/045","source_hash":"d12f91fffa8e66aee24b6460682a940e68cbd0c438cac3277879b4f9ffed9017","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"399cd3f98c899e5b18290991e66a6551d45be708e894e76dd6bfeb0d481afa6f","text":"新增 sync_seq_error_count 列到系统视图 pg_stat_subscription_stats，用于报告序列同步错误（Vignesh C）§§","title":"新增 sync_seq_error_count 列到系统视图 pg_stat_subscription_stats，用于报告序列同步错误","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["a5b543258"],"commit_groups":[["a5b543258"]],"commits":["a5b543258"],"cves":[],"db_id":"f5c7e7c69cfdca9250acd3ee36e9c748","html":"\u003cp\u003e新增 \u003ccode\u003estats_reset\u003c/code\u003e 列到系统视图 \u003ca href=\"/docs/19/monitoring-stats.html#PG-STAT-ALL-TABLES-VIEW\" title=\"表 27.31. pg_stat_all_tables 视图\"\u003e\u003ccode\u003epg_stat_all_tables\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/monitoring-stats.html#PG-STAT-ALL-INDEXES-VIEW\" title=\"表 27.33. pg_stat_all_indexes 视图\"\u003e\u003ccode\u003epg_stat_all_indexes\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/monitoring-stats.html#PG-STATIO-ALL-SEQUENCES-VIEW\" title=\"表 27.36. pg_statio_all_sequences 视图\"\u003e\u003ccode\u003epg_statio_all_sequences\u003c/code\u003e\u003c/a\u003e（Bertrand Drouvot，Sami Imseih，Shihao Zhong）\u003ca href=\"https://postgr.es/c/a5b543258\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e它也出现在 \u003ccode\u003esys\u003c/code\u003e 和 \u003ccode\u003euser\u003c/code\u003e 变体视图中。\u003c/p\u003e","id":"19.0-e0c9a7668fc6f797","identity_text":"Add stats_reset column to system views pg_stat_all_tables, pg_stat_all_indexes, and pg_statio_all_sequences (Bertrand Drouvot, Sami Imseih, Shihao Zhong) It also appears in the sys and user view variants.","part":"changes","patch_ids":["b94fddee8119e23ed09407730cab96ee"],"related_changes":[],"relations":[],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["a5b543258"],"source_entry_id":"19.0/changes/046","source_hash":"39ca4dd394136b917b921549a4735d5e4badc65fdb01ad5b9791dc48ddd972b7","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"cb024b7464e21b154d2ac4a89912f39aa5989c4dc45edefc0432e4b61cbcf586","text":"新增 stats_reset 列到系统视图 pg_stat_all_tables、pg_stat_all_indexes 和 pg_statio_all_sequences（Bertrand Drouvot，Sami Imseih，Shihao Zhong）§ 它也出现在 sys 和 user 变体视图中。","title":"新增 stats_reset 列到系统视图 pg_stat_all_tables、pg_stat_all_indexes 和 pg_statio_all_sequences","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["8fe315f18","b71bae41a"],"commit_groups":[["8fe315f18"],["b71bae41a"]],"commits":["8fe315f18","b71bae41a"],"cves":[],"db_id":"505b4dd55dff2c91658e2a2d1715bdc4","html":"\u003cp\u003e新增 \u003ccode\u003estats_reset\u003c/code\u003e 列到系统视图 \u003ca href=\"/docs/19/monitoring-stats.html#PG-STAT-USER-FUNCTIONS-VIEW\" title=\"表 27.37. pg_stat_user_functions 视图\"\u003e\u003ccode\u003epg_stat_user_functions\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/monitoring-stats.html#PG-STAT-DATABASE-CONFLICTS-VIEW\" title=\"表 27.30. pg_stat_database_conflicts 视图\"\u003e\u003ccode\u003epg_stat_database_conflicts\u003c/code\u003e\u003c/a\u003e（Bertrand Drouvot，Shihao Zhong）\u003ca href=\"https://postgr.es/c/b71bae41a\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/8fe315f18\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-50be28a4084e9067","identity_text":"Add stats_reset column to system views pg_stat_user_functions and pg_stat_database_conflicts (Bertrand Drouvot, Shihao Zhong)","part":"changes","patch_ids":["d5de6bdab3281831e2e8260330bfa7d6","fc9ce8f2f50f1d20581255dcbf9d63c6"],"related_changes":[],"relations":[],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["8fe315f18","b71bae41a"],"source_entry_id":"19.0/changes/047","source_hash":"614ec509248545f6812f20962edda14d8096d7113923d5facc811f363211db45","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"e3e54c16b395124e7f99d30b786922557116cf96924b7e69b79afe9c18c019c2","text":"新增 stats_reset 列到系统视图 pg_stat_user_functions 和 pg_stat_database_conflicts（Bertrand Drouvot，Shihao Zhong）§§","title":"新增 stats_reset 列到系统视图 pg_stat_user_functions 和 pg_stat_database_conflicts","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["f3c9e341c"],"commit_groups":[["f3c9e341c"]],"commits":["f3c9e341c"],"cves":[],"db_id":"f1b35f8c303382fe0fb2d0980b35c48e","html":"\u003cp\u003e新增 \u003ccode\u003elocation\u003c/code\u003e 列到系统视图 \u003ca href=\"/docs/19/view-pg-available-extensions.html\" title=\"53.3. pg_available_extensions\"\u003e\u003ccode\u003epg_available_extensions\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/view-pg-available-extension-versions.html\" title=\"53.4. pg_available_extension_versions\"\u003e\u003ccode\u003epg_available_extension_versions\u003c/code\u003e\u003c/a\u003e，用于报告扩展所在的文件系统目录（Matheus Alcantara）\u003ca href=\"https://postgr.es/c/f3c9e341c\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-4019554496bae5ca","identity_text":"Add location column to system views pg_available_extensions and pg_available_extension_versions to report the file system directory of extensions (Matheus Alcantara)","part":"changes","patch_ids":["8c2b61f2e68b7748094e89a3e7bdcbda"],"related_changes":[],"relations":[],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["f3c9e341c"],"source_entry_id":"19.0/changes/048","source_hash":"bd4f62431beab10b72bd1d87afc469e9a8a94163423213a9810e2833de74f13a","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"6b6cd5af842618c2f752830802047edc7f1ed45b71dc2499c2309fbead9aaf0b","text":"新增 location 列到系统视图 pg_available_extensions 和 pg_available_extension_versions，用于报告扩展所在的文件系统目录（Matheus Alcantara）§","title":"新增 location 列到系统视图 pg_available_extensions 和 pg_available_extension_versions，用于报告扩展所在的文件系统目录","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["deb674454"],"commit_groups":[["deb674454"]],"commits":["deb674454"],"cves":[],"db_id":"1f9f8ed94d3c59c2eda6090a073ad7e2","html":"\u003cp\u003e新增 \u003ccode\u003ebackup_type\u003c/code\u003e 列到系统视图 \u003ca href=\"/docs/19/progress-reporting.html#PG-STAT-PROGRESS-BASEBACKUP-VIEW\" title=\"表 27.52. pg_stat_progress_basebackup 视图\"\u003e\u003ccode\u003epg_stat_progress_basebackup\u003c/code\u003e\u003c/a\u003e，用于报告备份类型（Shinya Kato）\u003ca href=\"https://postgr.es/c/deb674454\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e可能的值为 \u003ccode\u003efull\u003c/code\u003e 或 \u003ccode\u003eincremental\u003c/code\u003e。\u003c/p\u003e","id":"19.0-99c97397f9958339","identity_text":"Add backup_type column to system view pg_stat_progress_basebackup to report the type of backup (Shinya Kato) Possible values are full or incremental.","part":"changes","patch_ids":["0e7f9ff1a56b8d6464997f032f104edf"],"related_changes":[],"relations":[],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["deb674454"],"source_entry_id":"19.0/changes/049","source_hash":"fc26cc2b937113e8336cebcfa15d2737b8980f1373b9e949ad88646e70cd6231","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"b93e2ee71cbbcdc1a03bc1ac1c70dddd165abdc3b2cba5f51a6dd03422b673db","text":"新增 backup_type 列到系统视图 pg_stat_progress_basebackup，用于报告备份类型（Shinya Kato）§ 可能的值为 full 或 incremental。","title":"新增 backup_type 列到系统视图 pg_stat_progress_basebackup，用于报告备份类型","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["a36164e74"],"commit_groups":[["a36164e74"]],"commits":["a36164e74"],"cves":[],"db_id":"896b36096549f4229d02416c3d5820d6","html":"\u003cp\u003e新增 \u003ccode\u003econnecting\u003c/code\u003e 值到系统视图列 \u003ca href=\"/docs/19/monitoring-stats.html#PG-STAT-WAL-RECEIVER-VIEW\" title=\"表 27.16. pg_stat_wal_receiver 视图\"\u003e\u003ccode\u003epg_stat_wal_receiver\u003c/code\u003e\u003c/a\u003e.\u003ca href=\"/docs/19/monitoring-stats.html#PG-STAT-WAL-RECEIVER-VIEW\" title=\"表 27.16. pg_stat_wal_receiver 视图\"\u003e\u003ccode\u003estatus\u003c/code\u003e\u003c/a\u003e（Xuneng Zhou）\u003ca href=\"https://postgr.es/c/a36164e74\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-2df353c6ff64577c","identity_text":"Add connecting value to system view column pg_stat_wal_receiver.status (Xuneng Zhou)","part":"changes","patch_ids":["f9eed4e89f63f05e1078d7540fc2a0ee"],"related_changes":[],"relations":[],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["a36164e74"],"source_entry_id":"19.0/changes/050","source_hash":"b92a46a95d3bbdc52c8cd87d6c05c9c69b51eca943b6ac75a91f7bfef8fc424e","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"9df65d2de7d50d88bfb2f0b9d13bf18655a5643ec30dea8eb6b4f90f6e63cb0b","text":"新增 connecting 值到系统视图列 pg_stat_wal_receiver.status（Xuneng Zhou）§","title":"新增 connecting 值到系统视图列 pg_stat_wal_receiver.status","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["f9a09aa29"],"commit_groups":[["f9a09aa29"]],"commits":["f9a09aa29"],"cves":[],"db_id":"ffa410b8956c468fd5b1d6ca8f0bb0f2","html":"\u003cp\u003e新增对写入 \u003cacronym\u003eWAL\u003c/acronym\u003e 的整页镜像字节数的报告（Shinya Kato）\u003ca href=\"https://postgr.es/c/f9a09aa29\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e可通过系统视图 \u003ca href=\"/docs/19/monitoring-stats.html#PG-STAT-WAL-VIEW\" title=\"表 27.28. pg_stat_wal 视图\"\u003e\u003ccode\u003epg_stat_wal\u003c/code\u003e\u003c/a\u003e 和函数 \u003ca href=\"/docs/19/monitoring-stats.html#PG-STAT-GET-BACKEND-WAL\"\u003e\u003ccode\u003epg_stat_get_backend_wal()\u003c/code\u003e\u003c/a\u003e 访问。\u003c/p\u003e","id":"19.0-debc6a808b6ef0f9","identity_text":"Add reporting of the bytes written to WAL for full page images (Shinya Kato) This is accessible via system view pg_stat_wal and function pg_stat_get_backend_wal().","part":"changes","patch_ids":["97045c11cebea7be33f1e014d9f1bcec"],"related_changes":[],"relations":[],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["f9a09aa29"],"source_entry_id":"19.0/changes/051","source_hash":"dcec56ab9d88744d8c71c3102ff80da549e3026d2abfb849cb643c40c3f742e1","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"c762b46b810558e16db8b5d877553814f88bf9b0ffbad7b67bcfcc0f548b0f96","text":"新增对写入 WAL 的整页镜像字节数的报告（Shinya Kato）§ 可通过系统视图 pg_stat_wal 和函数 pg_stat_get_backend_wal() 访问。","title":"新增对写入 WAL 的整页镜像字节数的报告","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["3b88e50d6"],"commit_groups":[["3b88e50d6"]],"commits":["3b88e50d6"],"cves":[],"db_id":"12db9d49dbacdd3acd3097499d95257b","html":"\u003cp\u003e在系统视图 \u003ca href=\"/docs/19/view-pg-stats.html\" title=\"53.31. pg_stats\"\u003e\u003ccode\u003epg_stats\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/view-pg-stats-ext.html\" title=\"53.32. pg_stats_ext\"\u003e\u003ccode\u003epg_stats_ext\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/view-pg-stats-ext-exprs.html\" title=\"53.33. pg_stats_ext_exprs\"\u003e\u003ccode\u003epg_stats_ext_exprs\u003c/code\u003e\u003c/a\u003e 中新增列（Corey Huinker）\u003ca href=\"https://postgr.es/c/3b88e50d6\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e新增表 \u003ccode\u003eOID\u003c/code\u003e 和属性号列到 \u003ca href=\"/docs/19/view-pg-stats.html\" title=\"53.31. pg_stats\"\u003e\u003ccode\u003epg_stats\u003c/code\u003e\u003c/a\u003e，并为另外两个视图新增表 \u003ccode\u003eOID\u003c/code\u003e 和统计对象 \u003ccode\u003eOID\u003c/code\u003e 列。\u003c/p\u003e","id":"19.0-acddee022cbbb5c8","identity_text":"Add columns to system views pg_stats, pg_stats_ext, and pg_stats_ext_exprs (Corey Huinker) Adds table OID and attribute number columns to pg_stats, and table OID and statistics object OID columns to the other two.","part":"changes","patch_ids":["167e0c8c1a26c272980190d8e7a0e270"],"related_changes":[],"relations":[],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["3b88e50d6"],"source_entry_id":"19.0/changes/052","source_hash":"77a507a60e5bb6de26e73824f5eab9e337ebfb84afe0035ece07905867de0aee","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"0f862843f1f0944fb238a9e11512a752eb6794b9a8b72ff5efa632c311c6e038","text":"在系统视图 pg_stats、pg_stats_ext 和 pg_stats_ext_exprs 中新增列（Corey Huinker）§ 新增表 OID 和属性号列到 pg_stats，并为另外两个视图新增表 OID 和统计对象 OID 列。","title":"在系统视图 pg_stats、pg_stats_ext 和 pg_stats_ext_exprs 中新增列","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["307447e6d"],"commit_groups":[["307447e6d"]],"commits":["307447e6d"],"cves":[],"db_id":"2652a7114a139c675a08bcc66bca5c29","html":"\u003cp\u003e为范围类型的\u003ca href=\"/docs/19/sql-createstatistics.html\" title=\"CREATE STATISTICS\"\u003e扩展统计信息\u003c/a\u003e在系统视图 \u003ca href=\"/docs/19/view-pg-stats-ext-exprs.html\" title=\"53.33. pg_stats_ext_exprs\"\u003e\u003ccode\u003epg_stats_ext_exprs\u003c/code\u003e\u003c/a\u003e 中新增相关信息（Corey Huinker，Michael Paquier）\u003ca href=\"https://postgr.es/c/307447e6d\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-5f34e7a99a37e89e","identity_text":"Add information about range type extended statistics to system view pg_stats_ext_exprs (Corey Huinker, Michael Paquier)","part":"changes","patch_ids":["a3f874f89e51ed918a91885a562fc58a"],"related_changes":[],"relations":[],"section":"服务器 / 系统视图","section_path":["服务器","系统视图"],"source_commits":["307447e6d"],"source_entry_id":"19.0/changes/053","source_hash":"7004b133b9a4e3e0727d2816fd789a780834eb4ce50bd9597676936bc9b2cb83","source_url":"/docs/release/19.0/#RELEASE-19-SYSTEM-VIEWS","statement_hash":"a3e7d5a72903aacf1d92bd38b10a48ee7596723c687678c56503c342ea5cb53b","text":"为范围类型的扩展统计信息在系统视图 pg_stats_ext_exprs 中新增相关信息（Corey Huinker，Michael Paquier）§","title":"为范围类型的扩展统计信息在系统视图 pg_stats_ext_exprs 中新增相关信息","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["38e0190ce"],"commit_groups":[["38e0190ce"]],"commits":["38e0190ce"],"cves":[],"db_id":"ac30fd513b37b90f8faa730408010b32","html":"\u003cp\u003e允许按进程类型指定 \u003ca href=\"/docs/19/runtime-config-logging.html#GUC-LOG-MIN-MESSAGES\"\u003e\u003ccode\u003elog_min_messages\u003c/code\u003e\u003c/a\u003e 日志级别（Euler Taveira）\u003ca href=\"https://postgr.es/c/38e0190ce\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e新格式为 \"\u003cem\u003e\u003ccode\u003etype\u003c/code\u003e\u003c/em\u003e:\u003cem\u003e\u003ccode\u003elevel\u003c/code\u003e\u003c/em\u003e\"。不带冒号的值控制所有进程类型，以保持向后兼容。\u003c/p\u003e","id":"19.0-dcbbc283cdde6ee1","identity_text":"Allow log_min_messages log levels to be specified by process type (Euler Taveira) The new format is type:level. A value without a colon controls all process types, allowing backward compatibility.","part":"changes","patch_ids":["66cbc829f955df84710d975f92c71012"],"related_changes":[],"relations":[],"section":"服务器 / 监控","section_path":["服务器","监控"],"source_commits":["38e0190ce"],"source_entry_id":"19.0/changes/054","source_hash":"be7290339ed3386b65ba52e168d8f8e299a2362e9999cbad239f7d391974f0a4","source_url":"/docs/release/19.0/#RELEASE-19-MONITORING","statement_hash":"7f05b75ae5b85f970d1b12a0689bf0272dc6ceff5685156ccecbf05b22fe4414","text":"允许按进程类型指定 log_min_messages 日志级别（Euler Taveira）§ 新格式为 \"type:level\"。不带冒号的值控制所有进程类型，以保持向后兼容。","title":"允许按进程类型指定 log_min_messages 日志级别","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["dd3ae3783"],"commit_groups":[["dd3ae3783"]],"commits":["dd3ae3783"],"cves":[],"db_id":"58e5a1965b6c9bd4c80f9ab5181ecfc4","html":"\u003cp\u003e新增服务器变量 \u003ca href=\"/docs/19/runtime-config-logging.html#GUC-LOG-AUTOANALYZE-MIN-DURATION\"\u003e\u003ccode\u003elog_autoanalyze_min_duration\u003c/code\u003e\u003c/a\u003e，用于记录\u003ca href=\"/docs/19/routine-vacuuming.html#AUTOVACUUM\" title=\"24.1.6. 自动清理守护进程\"\u003e自动清理\u003c/a\u003e执行的耗时较长的分析操作（Shinya Kato）\u003ca href=\"https://postgr.es/c/dd3ae3783\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e服务器变量 \u003ca href=\"/docs/19/runtime-config-logging.html#GUC-LOG-AUTOVACUUM-MIN-DURATION\"\u003e\u003ccode\u003elog_autovacuum_min_duration\u003c/code\u003e\u003c/a\u003e 现在只控制自动清理执行的清理操作日志。\u003c/p\u003e","id":"19.0-0ec2796c19e26ca7","identity_text":"Add server variable log_autoanalyze_min_duration to log long-running analyze operations by autovacuum operations (Shinya Kato) Server variable log_autovacuum_min_duration now only controls logging of vacuum operations by autovacuum.","part":"changes","patch_ids":["84b365b1be8baa0d0a64ba5ea86f4c79"],"related_changes":[],"relations":[],"section":"服务器 / 监控","section_path":["服务器","监控"],"source_commits":["dd3ae3783"],"source_entry_id":"19.0/changes/055","source_hash":"3ab69293512f4b1b4b7de4192280ae028f260485f379c42bf7328c01d1cf13ec","source_url":"/docs/release/19.0/#RELEASE-19-MONITORING","statement_hash":"82a3f532d09f34212cda73df8c277f405507eca0db1af1dc032e3dbb92d90fa7","text":"新增服务器变量 log_autoanalyze_min_duration，用于记录自动清理执行的耗时较长的分析操作（Shinya Kato）§ 服务器变量 log_autovacuum_min_duration 现在只控制自动清理执行的清理操作日志。","title":"新增服务器变量 log_autoanalyze_min_duration，用于记录自动清理执行的耗时较长的分析操作","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["2aac62be8"],"commit_groups":[["2aac62be8"]],"commits":["2aac62be8"],"cves":[],"db_id":"862330852250e39402618fa205b0a7f7","html":"\u003cp\u003e默认启用服务器变量 \u003ca href=\"/docs/19/runtime-config-logging.html#GUC-LOG-LOCK-WAITS\"\u003e\u003ccode\u003elog_lock_waits\u003c/code\u003e\u003c/a\u003e（Laurenz Albe）\u003ca href=\"https://postgr.es/c/2aac62be8\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-c42f7b629365e319","identity_text":"Enable server variable log_lock_waits by default (Laurenz Albe)","part":"changes","patch_ids":["ebb36d7ba1d8de32a89cb9080070a98e"],"related_changes":[],"relations":[],"section":"服务器 / 监控","section_path":["服务器","监控"],"source_commits":["2aac62be8"],"source_entry_id":"19.0/changes/056","source_hash":"d8803b32a7ee48607b51d287f97cf4bd9a75011cd6bbfd480c270c372aefc5f9","source_url":"/docs/release/19.0/#RELEASE-19-MONITORING","statement_hash":"fca93df9b61caa1563288978fbd0271a240aa3aa5cfa56c90e992a3f9750caba","text":"默认启用服务器变量 log_lock_waits（Laurenz Albe）§","title":"默认启用服务器变量 log_lock_waits","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["06473f5a3"],"commit_groups":[["06473f5a3"]],"commits":["06473f5a3"],"cves":[],"db_id":"5646c356710a0ff468e680767a12145f","html":"\u003cp\u003e新增服务器变量 \u003ca href=\"/docs/19/runtime-config-logging.html#GUC-DEBUG-PRINT-RAW-PARSE\"\u003e\u003ccode\u003edebug_print_raw_parse\u003c/code\u003e\u003c/a\u003e，用于记录原始解析树（Chao Li）\u003ca href=\"https://postgr.es/c/06473f5a3\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e当服务器以 debug 级别 3 及以上启动时，也会启用该输出。\u003c/p\u003e","id":"19.0-b8850f1136aa7e26","identity_text":"Add server variable debug_print_raw_parse to log raw parse trees (Chao Li) This is also enabled when the server is started with debug level three and higher.","part":"changes","patch_ids":["35275b87d078704b84093abdbb33b317"],"related_changes":[],"relations":[],"section":"服务器 / 监控","section_path":["服务器","监控"],"source_commits":["06473f5a3"],"source_entry_id":"19.0/changes/057","source_hash":"cf2b08c6678a0a1a1b8123788c8c9b909cd72f7ab49aa1b35cd5d06be6b81989","source_url":"/docs/release/19.0/#RELEASE-19-MONITORING","statement_hash":"888aed639a6c6d53026c2715f12cfbf15bb0732325722454f20900b5f470d25d","text":"新增服务器变量 debug_print_raw_parse，用于记录原始解析树（Chao Li）§ 当服务器以 debug 级别 3 及以上启动时，也会启用该输出。","title":"新增服务器变量 debug_print_raw_parse，用于记录原始解析树","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["112faf137"],"commit_groups":[["112faf137"]],"commits":["112faf137"],"cves":[],"db_id":"2cd99aa5d193f608f0189a8061cb76f6","html":"\u003cp\u003e让来自远端服务器的消息以与本地服务器消息相同的格式出现在服务器日志中（Vignesh C）\u003ca href=\"https://postgr.es/c/112faf137\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这包括 replication、\u003ca href=\"/docs/19/postgres-fdw.html\" title=\"F.40. postgres_fdw — 访问存储在外部 PostgreSQL 服务器中的数据\"\u003epostgres_fdw\u003c/a\u003e和\u003ca href=\"/docs/19/dblink.html\" title=\"F.11. dblink — 连接到其他 PostgreSQL 数据库\"\u003edblink\u003c/a\u003e服务器。\u003c/p\u003e","id":"19.0-77afbd85e35a3a16","identity_text":"Make messages coming from remote servers appear in the server logs in the same format as local server messages (Vignesh C) These include replication, postgres-fdw , and dblink servers.","part":"changes","patch_ids":["ccf9c16787dca7d50e3a9153f9cfb579"],"related_changes":[],"relations":[],"section":"服务器 / 监控","section_path":["服务器","监控"],"source_commits":["112faf137"],"source_entry_id":"19.0/changes/058","source_hash":"4ae996182bc6ba341f5e82fada3ae225f941056fba9d335934e5a8ae1b3733fb","source_url":"/docs/release/19.0/#RELEASE-19-MONITORING","statement_hash":"77ed52b035fe5f53546a51163df4617c0ab7ab64f9c6bced5a8bf49f6daca771","text":"让来自远端服务器的消息以与本地服务器消息相同的格式出现在服务器日志中（Vignesh C）§ 这包括 replication、postgres_fdw和dblink服务器。","title":"让来自远端服务器的消息以与本地服务器消息相同的格式出现在服务器日志中","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["ad25744f4"],"commit_groups":[["ad25744f4"]],"commits":["ad25744f4"],"cves":[],"db_id":"955d9e4b2698a280b008c584d9539486","html":"\u003cp\u003e新增 \u003cacronym\u003eWAL\u003c/acronym\u003e \u003ca href=\"/docs/19/runtime-config-wal.html#GUC-FULL-PAGE-WRITES\"\u003e整页写入\u003c/a\u003e字节报告到 \u003ca href=\"/docs/19/sql-vacuum.html\" title=\"VACUUM\"\u003e\u003ccode\u003eVACUUM\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/sql-analyze.html\" title=\"ANALYZE\"\u003e\u003ccode\u003eANALYZE\u003c/code\u003e\u003c/a\u003e 日志（Shinya Kato）\u003ca href=\"https://postgr.es/c/ad25744f4\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-784899b25393e573","identity_text":"Add reporting of WAL full-page write bytes to VACUUM and ANALYZE logging (Shinya Kato)","part":"changes","patch_ids":["94a3f0e4a3b21f2c53910cfca81db9ff"],"related_changes":[],"relations":[],"section":"服务器 / 监控","section_path":["服务器","监控"],"source_commits":["ad25744f4"],"source_entry_id":"19.0/changes/059","source_hash":"e4d576827da843c05aebed37f9de9df430acabe17e1ee06c9455ef6850ce86cd","source_url":"/docs/release/19.0/#RELEASE-19-MONITORING","statement_hash":"a44cec2b41fa334c464c3877a0ebf1d70f42fabbbc377f9751741f45ee8cde36","text":"新增 WAL 整页写入字节报告到 VACUUM 和 ANALYZE 日志（Shinya Kato）§","title":"新增 WAL 整页写入字节报告到 VACUUM 和 ANALYZE 日志","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["e05a24c2d"],"commit_groups":[["e05a24c2d"]],"commits":["e05a24c2d"],"cves":[],"db_id":"b3b01a7c701b61ef5858222373ff004a","html":"\u003cp\u003e为 \u003ca href=\"/docs/19/sql-copy.html\" title=\"COPY\"\u003e\u003ccode\u003eCOPY FROM/TO\u003c/code\u003e\u003c/a\u003e 在管道、文件或程序上新增 I/O 等待事件（Nikolay Samokhvalov）\u003ca href=\"https://postgr.es/c/e05a24c2d\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-9b6c5e6a79abfc98","identity_text":"Add IO wait events for COPY FROM/TO on a pipe, file, or program (Nikolay Samokhvalov)","part":"changes","patch_ids":["2630f9bc0cce8bc4ebf35ca0c0d14d12"],"related_changes":[],"relations":[],"section":"服务器 / 监控","section_path":["服务器","监控"],"source_commits":["e05a24c2d"],"source_entry_id":"19.0/changes/060","source_hash":"5396bad096ad5313b40ecedabf957cdd0804d5e03395a39537797401e355c0b2","source_url":"/docs/release/19.0/#RELEASE-19-MONITORING","statement_hash":"5de254cc8cd56e901c00de548a4109f9ca758ba8ef1f2a39432e282362c077d9","text":"为 COPY FROM/TO 在管道、文件或程序上新增 I/O 等待事件（Nikolay Samokhvalov）§","title":"为 COPY FROM/TO 在管道、文件或程序上新增 I/O 等待事件","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["3cb5808bd","7a39f43d8"],"commit_groups":[["3cb5808bd"],["7a39f43d8"]],"commits":["3cb5808bd","7a39f43d8"],"cves":[],"db_id":"9ce16931b04b6b8074722b817754bc63","html":"\u003cp\u003e新增\u003ca href=\"/docs/19/runtime-config-wal.html#GUC-COMMIT-DELAY\"\u003ecommit_delay\u003c/a\u003e以及 \u003cacronym\u003eWAL\u003c/acronym\u003e 写入和刷盘 \u003ca href=\"/docs/19/wal-internals.html\" title=\"28.6. WAL 内部机制\"\u003eLSN\u003c/a\u003e 的等待事件（Xuneng Zhou）\u003ca href=\"https://postgr.es/c/7a39f43d8\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/3cb5808bd\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-028c1424830a912c","identity_text":"Add wait events for guc-commit-delay and for WAL write and flush LSNs (Xuneng Zhou)","part":"changes","patch_ids":["1f0d51e7a5eb278056c49933b60ca129","aa919e1de06d26365f9c5f03b3bcdf3a"],"related_changes":[],"relations":[],"section":"服务器 / 监控","section_path":["服务器","监控"],"source_commits":["3cb5808bd","7a39f43d8"],"source_entry_id":"19.0/changes/061","source_hash":"b6cdd2c52e3d79b26d3f29232151d98d568bf6c9066cf95a0b816da2483f1c53","source_url":"/docs/release/19.0/#RELEASE-19-MONITORING","statement_hash":"971e2da0d9f5c4e877063d950e28551c7a6d2239996851345a33279cfbe6c6c3","text":"新增commit_delay以及 WAL 写入和刷盘 LSN 的等待事件（Xuneng Zhou）§§","title":"新增commit_delay以及 WAL 写入和刷盘 LSN 的等待事件","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["b93172ca5"],"commit_groups":[["b93172ca5"]],"commits":["b93172ca5"],"cves":[],"db_id":"5c4b41b07ad5a6846d0f88875676a366","html":"\u003cp\u003e让 \u003ca href=\"/docs/19/functions-sequence.html#FUNC-PG-GET-SEQUENCE-DATA\"\u003e\u003ccode\u003epg_get_sequence_data()\u003c/code\u003e\u003c/a\u003e 返回序列页 \u003ca href=\"/docs/19/wal-internals.html\" title=\"28.6. WAL 内部机制\"\u003e\u003cacronym\u003eLSN\u003c/acronym\u003e\u003c/a\u003e（Vignesh C）\u003ca href=\"https://postgr.es/c/b93172ca5\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-0ec6a0479820a04f","identity_text":"Have pg_get_sequence_data() return the sequence page LSN (Vignesh C)","part":"changes","patch_ids":["ca358649ef732c7b4f3918d56e59e40a"],"related_changes":[],"relations":[],"section":"服务器 / 监控","section_path":["服务器","监控"],"source_commits":["b93172ca5"],"source_entry_id":"19.0/changes/062","source_hash":"01e5953fadc89c81a681f12c7123f2d6105b9af0f43071e0f43a34b22826174d","source_url":"/docs/release/19.0/#RELEASE-19-MONITORING","statement_hash":"0d6a38307641d0f3030b9c7495bfa8fae80ef337dafac322eea8a774c6c546c8","text":"让 pg_get_sequence_data() 返回序列页 LSN（Vignesh C）§","title":"让 pg_get_sequence_data() 返回序列页 LSN","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["97b101776"],"commit_groups":[["97b101776"]],"commits":["97b101776"],"cves":[],"db_id":"bf2a05dc98b437e70313063ece4b32a8","html":"\u003cp\u003e新增函数 \u003ca href=\"/docs/19/functions-info.html#FUNCTIONS-INFO-SNAPSHOT\" title=\"9.28.8. 事务 ID 和快照信息函数\"\u003e\u003ccode\u003epg_get_multixact_stats()\u003c/code\u003e\u003c/a\u003e，用于报告 \u003ca href=\"/docs/19/routine-vacuuming.html#VACUUM-FOR-MULTIXACT-WRAPAROUND\" title=\"24.1.5.1. 多事务与回卷\"\u003emultixact\u003c/a\u003e 活动（Naga Appani）\u003ca href=\"https://postgr.es/c/97b101776\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-fe3f69664fac6b04","identity_text":"Add function pg_get_multixact_stats() to report multixact activity (Naga Appani)","part":"changes","patch_ids":["0d2af11dadc727e6184dfcf0ec4cd491"],"related_changes":[],"relations":[],"section":"服务器 / 监控","section_path":["服务器","监控"],"source_commits":["97b101776"],"source_entry_id":"19.0/changes/063","source_hash":"4d55154169088eccde38cc1ff20475d6012724007fdacd5c597a43bd5a9772c2","source_url":"/docs/release/19.0/#RELEASE-19-MONITORING","statement_hash":"ccd410072bda5c9bf21cdd7f9c9b21c66a942c5b683eaa70c7fe9c3ea332f5d2","text":"新增函数 pg_get_multixact_stats()，用于报告 multixact 活动（Naga Appani）§","title":"新增函数 pg_get_multixact_stats()，用于报告 multixact 活动","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["48f11bfa0"],"commit_groups":[["48f11bfa0"]],"commits":["48f11bfa0"],"cves":[],"db_id":"c86b2dfd0978d65014a81a022bfc457e","html":"\u003cp\u003e当 xid 和 multi-xids 的\u003ca href=\"/docs/19/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND\" title=\"24.1.5. 防止事务 ID 回卷失败\"\u003e回卷\u003c/a\u003e距离小于 1 亿时发出警告（Nathan Bossart）\u003ca href=\"https://postgr.es/c/48f11bfa0\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此前的警告阈值为 4000 万。警告会发送给客户端并写入服务器日志。\u003c/p\u003e","id":"19.0-9763b20f67b56c79","identity_text":"Issue warnings when the wraparound of xid and multi-xids is less than 100 million (Nathan Bossart) The previous warning was 40 million. Warnings are issued to clients and in the server log.","part":"changes","patch_ids":["56cc61cb3c8c85c3391226a6d84b88b9"],"related_changes":[],"relations":[],"section":"服务器 / 监控","section_path":["服务器","监控"],"source_commits":["48f11bfa0"],"source_entry_id":"19.0/changes/064","source_hash":"c5e174788f858c1ea39304f17b2f2e66d81fbe3a3b5cbce9ae18976d4b3b960b","source_url":"/docs/release/19.0/#RELEASE-19-MONITORING","statement_hash":"fbeacdf215797907d57b49f52da6308db6ae4242af2333d2566670274680679c","text":"当 xid 和 multi-xids 的回卷距离小于 1 亿时发出警告（Nathan Bossart）§ 此前的警告阈值为 4000 万。警告会发送给客户端并写入服务器日志。","title":"当 xid 和 multi-xids 的回卷距离小于 1 亿时发出警告","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["d7965d65f"],"commit_groups":[["d7965d65f"]],"commits":["d7965d65f"],"cves":[],"db_id":"0d9f9454c64cc4b7eedd304905ab4a38","html":"\u003cp\u003e新增评分系统，用于控制\u003ca href=\"/docs/19/routine-vacuuming.html#AUTOVACUUM\" title=\"24.1.6. 自动清理守护进程\"\u003e自动清理\u003c/a\u003e处理表的顺序（Nathan Bossart）\u003ca href=\"https://postgr.es/c/d7965d65f\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e新增的服务器变量有 \u003ca href=\"/docs/19/runtime-config-vacuum.html#GUC-AUTOVACUUM-FREEZE-SCORE-WEIGHT\"\u003e\u003ccode\u003eautovacuum_freeze_score_weight\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/runtime-config-vacuum.html#GUC-AUTOVACUUM-MULTIXACT-FREEZE-SCORE-WEIGHT\"\u003e\u003ccode\u003eautovacuum_multixact_freeze_score_weight\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/runtime-config-vacuum.html#GUC-AUTOVACUUM-VACUUM-SCORE-WEIGHT\"\u003e\u003ccode\u003eautovacuum_vacuum_score_weight\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/runtime-config-vacuum.html#GUC-AUTOVACUUM-VACUUM-INSERT-SCORE-WEIGHT\"\u003e\u003ccode\u003eautovacuum_vacuum_insert_score_weight\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/runtime-config-vacuum.html#GUC-AUTOVACUUM-ANALYZE-SCORE-WEIGHT\"\u003e\u003ccode\u003eautovacuum_analyze_score_weight\u003c/code\u003e\u003c/a\u003e。\u003c/p\u003e","id":"19.0-cb5aee5db55b65e0","identity_text":"Add scoring system to control the order that tables are processed by autovacuum (Nathan Bossart) The new server variables are autovacuum_freeze_score_weight, autovacuum_multixact_freeze_score_weight, autovacuum_vacuum_score_weight, autovacuum_vacuum_insert_score_weight, and autovacuum_analyze_score_weight.","part":"changes","patch_ids":["76b377a180730964486ff9a5ba182cb0"],"related_changes":[],"relations":[],"section":"服务器 / 服务器配置","section_path":["服务器","服务器配置"],"source_commits":["d7965d65f"],"source_entry_id":"19.0/changes/065","source_hash":"d8b3f9b36a9bdfec1ee792da2576f86cdfbc83d6d11f47e3f6a5ce182f6d9c4f","source_url":"/docs/release/19.0/#RELEASE-19-SERVER-CONFIG","statement_hash":"3f0ba68cd9ab64f66d615898394c7a5b6c80ea26b2fda9fbc05de01328ca52eb","text":"新增评分系统，用于控制自动清理处理表的顺序（Nathan Bossart）§ 新增的服务器变量有 autovacuum_freeze_score_weight、autovacuum_multixact_freeze_score_weight、autovacuum_vacuum_score_weight、autovacuum_vacuum_insert_score_weight 和 autovacuum_analyze_score_weight。","title":"新增评分系统，用于控制自动清理处理表的顺序","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["4f433025f"],"commit_groups":[["4f433025f"]],"commits":["4f433025f"],"cves":[],"db_id":"06e99b63f9b1a29614cfa69977c749fe","html":"\u003cp\u003e新增 \u003ca href=\"/docs/19/ssl-tcp.html#SSL-SNI\" title=\"18.9.6. SNI 配置\"\u003e\u003cacronym\u003eSNI\u003c/acronym\u003e\u003c/a\u003e（Server Name Indication）服务端支持（Daniel Gustafsson，Jacob Champion）\u003ca href=\"https://postgr.es/c/4f433025f\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e新的配置文件 \u003ca href=\"/docs/19/runtime-config-file-locations.html#GUC-HOSTS-FILE\"\u003e\u003ccode\u003ePGDATA/pg_hosts.conf\u003c/code\u003e\u003c/a\u003e 指定主机名/密钥对。\u003c/p\u003e","id":"19.0-f7f6d4b0ac5b0751","identity_text":"Add server-side support for SNI (Server Name Indication) (Daniel Gustafsson, Jacob Champion) New configuration file PGDATA/pg_hosts.conf specifies hostname/key pairs.","part":"changes","patch_ids":["7ce29b9884bd363f5cf3fd82d02f9636"],"related_changes":[],"relations":[],"section":"服务器 / 服务器配置","section_path":["服务器","服务器配置"],"source_commits":["4f433025f"],"source_entry_id":"19.0/changes/066","source_hash":"5396b0786935e53ff282bb1bcbacbed3145bc9f074c3ef37e13b7de884b63a8f","source_url":"/docs/release/19.0/#RELEASE-19-SERVER-CONFIG","statement_hash":"0bca0f0700c01e6cfc8f695015587f5958945bd3795e2ebb116b677ec0be540b","text":"新增 SNI（Server Name Indication）服务端支持（Daniel Gustafsson，Jacob Champion）§ 新的配置文件 PGDATA/pg_hosts.conf 指定主机名/密钥对。","title":"新增 SNI（Server Name Indication）服务端支持","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["b977bd308"],"commit_groups":[["b977bd308"]],"commits":["b977bd308"],"cves":[],"db_id":"6af79610fa6d25b69fac86cc1b525a9a","html":"\u003cp\u003e允许 OAuth 验证器注册自定义 \u003ca href=\"/docs/19/auth-pg-hba-conf.html\" title=\"20.1. pg_hba.conf 文件\"\u003e\u003ccode\u003epg_hba.conf\u003c/code\u003e\u003c/a\u003e 认证选项（Jacob Champion，Zsolt Parragi）\u003ca href=\"https://postgr.es/c/b977bd308\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-58c725ecf0deb3e0","identity_text":"Allow OAuth validators to register custom pg_hba.conf authentication options (Jacob Champion, Zsolt Parragi)","part":"changes","patch_ids":["5b9e5d4e7cef9936983e3f65efaa6693"],"related_changes":[],"relations":[],"section":"服务器 / 服务器配置","section_path":["服务器","服务器配置"],"source_commits":["b977bd308"],"source_entry_id":"19.0/changes/067","source_hash":"b9cd2f6fe915572004508203dea57ce73e713ab594c4763e21184f480036dff4","source_url":"/docs/release/19.0/#RELEASE-19-SERVER-CONFIG","statement_hash":"2e148139c5c99b96fdb277c39e38ba6347c5afec649c1cd7f9022d3f9f2f16bc","text":"允许 OAuth 验证器注册自定义 pg_hba.conf 认证选项（Jacob Champion，Zsolt Parragi）§","title":"允许 OAuth 验证器注册自定义 pg_hba.conf 认证选项","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["d98197602"],"commit_groups":[["d98197602"]],"commits":["d98197602"],"cves":[],"db_id":"7546efde38c27c3ea4c44d31a764c942","html":"\u003cp\u003e允许角色 \u003ca href=\"/docs/19/predefined-roles.html#PREDEFINED-ROLE-PG-READ-ALL-DATA\"\u003e\u003ccode\u003epg_read_all_data\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/predefined-roles.html#PREDEFINED-ROLE-PG-READ-ALL-DATA\"\u003e\u003ccode\u003epg_write_all_data\u003c/code\u003e\u003c/a\u003e 读写大对象（Nitin Motiani，Nathan Bossart）\u003ca href=\"https://postgr.es/c/d98197602\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这些角色旨在允许非超级用户运行\u003ca href=\"/docs/19/app-pgdump.html\" title=\"pg_dump\"\u003e\u003cspan\u003epg_dump\u003c/span\u003e\u003c/a\u003e。\u003c/p\u003e","id":"19.0-45b2ab0ca584ec8a","identity_text":"Allow roles pg_read_all_data and pg_write_all_data to read/write large objects (Nitin Motiani, Nathan Bossart) These roles are designed to allow non-super users to run pg_dump.","part":"changes","patch_ids":["e8821ab803267cd9177e8f533e609ff5"],"related_changes":[],"relations":[],"section":"服务器 / 服务器配置","section_path":["服务器","服务器配置"],"source_commits":["d98197602"],"source_entry_id":"19.0/changes/068","source_hash":"127199712cb45ed03c695d443c22da7886e43b5a3c861863e0938e4249869482","source_url":"/docs/release/19.0/#RELEASE-19-SERVER-CONFIG","statement_hash":"f78ec1c3d3366a20842cbbac9665c0542dda68d3cb6ea036006fe09bdf6d8e89","text":"允许角色 pg_read_all_data 和 pg_write_all_data 读写大对象（Nitin Motiani，Nathan Bossart）§ 这些角色旨在允许非超级用户运行pg_dump。","title":"允许角色 pg_read_all_data 和 pg_write_all_data 读写大对象","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["f1e251be8"],"commit_groups":[["f1e251be8"]],"commits":["f1e251be8"],"cves":[],"db_id":"94d0fbd1cd265761e78acc6492d37d07","html":"\u003cp\u003e允许配置后台工作进程，使其在数据库级操作之前终止（Aya Iwata）\u003ca href=\"https://postgr.es/c/f1e251be8\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e由于现在可以终止造成阻塞的后台工作进程，数据库级操作可以更快完成。\u003c/p\u003e","id":"19.0-e8ecfac629a33f48","identity_text":"Allow background workers to be configured to terminate before database-level operations (Aya Iwata) This allows database-level operations to complete more quickly since blocking background workers can now be terminated.","part":"changes","patch_ids":["5a78770d7da2184228f0ab9685eafd9e"],"related_changes":[],"relations":[],"section":"服务器 / 服务器配置","section_path":["服务器","服务器配置"],"source_commits":["f1e251be8"],"source_entry_id":"19.0/changes/069","source_hash":"3b253bfaa88968971752451a8075a5a5a8c7c5e429269c6607cc4ca273a01257","source_url":"/docs/release/19.0/#RELEASE-19-SERVER-CONFIG","statement_hash":"828364cf1cc33ec4d8b84f8666275ef6a299eb947bab17da8e236dec761121c1","text":"允许配置后台工作进程，使其在数据库级操作之前终止（Aya Iwata）§ 由于现在可以终止造成阻塞的后台工作进程，数据库级操作可以更快完成。","title":"允许配置后台工作进程，使其在数据库级操作之前终止","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["ff4597acd"],"commit_groups":[["ff4597acd"]],"commits":["ff4597acd"],"cves":[],"db_id":"a5d855186d463c3452a21cc5487e0301","html":"\u003cp\u003e允许将表示列表的\u003ca href=\"/docs/19/config-setting.html\" title=\"19.1. 设置参数\"\u003e服务器变量\u003c/a\u003e值设为 \u003ccode\u003eNULL\u003c/code\u003e 来清空它们（Tom Lane）\u003ca href=\"https://postgr.es/c/ff4597acd\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-64612256f1602740","identity_text":"Allow server variables that represent lists to be emptied by setting the value to NULL (Tom Lane)","part":"changes","patch_ids":["04793e08fa193196f782ebd8711ddfaf"],"related_changes":[],"relations":[],"section":"服务器 / 服务器配置","section_path":["服务器","服务器配置"],"source_commits":["ff4597acd"],"source_entry_id":"19.0/changes/070","source_hash":"176c9e7d279e68d5d2a7b25b882d8a4254df4dcc4d87ef46cb8580a081f3a183","source_url":"/docs/release/19.0/#RELEASE-19-SERVER-CONFIG","statement_hash":"5816d3ee299a6bce320a65a558ad08dc9ac81ad2bcbe613dd407a003cf3c5cfd","text":"允许将表示列表的服务器变量值设为 NULL 来清空它们（Tom Lane）§","title":"允许将表示列表的服务器变量值设为 NULL 来清空它们","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["5334620ee"],"commit_groups":[["5334620ee"]],"commits":["5334620ee"],"cves":[],"db_id":"3cb57e2d01a6cd251c7c76adc4b04cd3","html":"\u003cp\u003e将\u003ca href=\"/docs/19/multibyte.html#MULTIBYTE-CHARSET-SUPPORTED\" title=\"23.3.1. 支持的字符集\"\u003eGB18030 编码\u003c/a\u003e从 2000 版更新到 2022 版（Chao Li，Zheng Tao）\u003ca href=\"https://postgr.es/c/5334620ee\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e兼容性细节请参见提交说明。\u003c/p\u003e","id":"19.0-2dbb2275f18e0901","identity_text":"Update GB18030 encoding from version 2000 to 2022 (Chao Li, Zheng Tao) See the commit message for compatibility details.","part":"changes","patch_ids":["48b8aca46ccc0401e45a940f9c75b966"],"related_changes":[],"relations":[],"section":"服务器 / 服务器配置","section_path":["服务器","服务器配置"],"source_commits":["5334620ee"],"source_entry_id":"19.0/changes/071","source_hash":"ee2981026ec290bb348e89954c5b60c8d9c4483c6d0eaabe3b08b41689028924","source_url":"/docs/release/19.0/#RELEASE-19-SERVER-CONFIG","statement_hash":"594deded9e558041e87867a80a07ef79e230cbd6044de59b45a32f09dc48c45e","text":"将GB18030 编码从 2000 版更新到 2022 版（Chao Li，Zheng Tao）§ 兼容性细节请参见提交说明。","title":"将GB18030 编码从 2000 版更新到 2022 版","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["447aae13b","49a181b5d"],"commit_groups":[["447aae13b"],["49a181b5d"]],"commits":["447aae13b","49a181b5d"],"cves":[],"db_id":"8510af8d8e9389f36a5077fe08ccb6bb","html":"\u003cp\u003e新增 \u003ca href=\"/docs/19/sql-wait.html\" title=\"WAIT\"\u003e\u003ccode\u003eWAIT\u003c/code\u003e\u003c/a\u003e 命令，允许备库等待 \u003ca href=\"/docs/19/wal-internals.html\" title=\"28.6. WAL 内部机制\"\u003e\u003cacronym\u003eLSN\u003c/acronym\u003e\u003c/a\u003e 值被写入、刷盘或重放（Kartyshov Ivan，Alexander Korotkov，Xuneng Zhou）\u003ca href=\"https://postgr.es/c/447aae13b\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/49a181b5d\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-f16d6c76b149aa22","identity_text":"Add WAIT command to allow standbys to wait for LSN values to be written, flushed, or replayed (Kartyshov Ivan, Alexander Korotkov, Xuneng Zhou)","part":"changes","patch_ids":["ab4333cd6963f42a7e4f86aa337dea68","b64769bf59f0f77abf2b0a0a53a251d2"],"related_changes":[],"relations":[],"section":"服务器 / 流复制与恢复","section_path":["服务器","流复制与恢复"],"source_commits":["447aae13b","49a181b5d"],"source_entry_id":"19.0/changes/072","source_hash":"7643753f4bdb59e3f5037f26f940fb5694e77c0975eb0cf59a6f9c0f6f1a166f","source_url":"/docs/release/19.0/#RELEASE-19-REPLICATION","statement_hash":"4357b28480e90e33d602b88e9ee9bd5d1d009e4ee3b3ac8d0e4c2b48b44ae249","text":"新增 WAIT 命令，允许备库等待 LSN 值被写入、刷盘或重放（Kartyshov Ivan，Alexander Korotkov，Xuneng Zhou）§ §","title":"新增 WAIT 命令，允许备库等待 LSN 值被写入、刷盘或重放","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["0d2d4a0ec"],"commit_groups":[["0d2d4a0ec"]],"commits":["0d2d4a0ec"],"cves":[],"db_id":"45a31034a4672bd881e44cbe52066ccc","html":"\u003cp\u003e改进 \u003ca href=\"/docs/19/functions-admin.html#PG-SYNC-REPLICATION-SLOTS\"\u003e\u003ccode\u003epg_sync_replication_slots()\u003c/code\u003e\u003c/a\u003e，使其等待同步完成（Ajin Cherian，Zhijie Hou）\u003ca href=\"https://postgr.es/c/0d2d4a0ec\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此前某些同步失败不会被报告。\u003c/p\u003e","id":"19.0-568de1b0b34a1f5f","identity_text":"Improve function pg_sync_replication_slots() to wait for replication synchronization completion (Ajin Cherian, Zhijie Hou) Previously, certain synchronization failures would not be reported.","part":"changes","patch_ids":["338e3e19e235235f0275be20e543213b"],"related_changes":[],"relations":[],"section":"服务器 / 流复制与恢复","section_path":["服务器","流复制与恢复"],"source_commits":["0d2d4a0ec"],"source_entry_id":"19.0/changes/073","source_hash":"d681defc763334271c6eabcffe2479e61a6f41208cdbe9de86a02faf459c7d7d","source_url":"/docs/release/19.0/#RELEASE-19-REPLICATION","statement_hash":"425b216f04b5fec1c9f6f6ba4f6eb2025d2d607e4b08e81c19bfc08de35595e5","text":"改进 pg_sync_replication_slots()，使其等待同步完成（Ajin Cherian，Zhijie Hou）§ 此前某些同步失败不会被报告。","title":"改进 pg_sync_replication_slots()，使其等待同步完成","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["a8f45dee9"],"commit_groups":[["a8f45dee9"]],"commits":["a8f45dee9"],"cves":[],"db_id":"203a2adcedefdb3edd8d755c8e8d5ca4","html":"\u003cp\u003e新增服务器变量 \u003ca href=\"/docs/19/runtime-config-replication.html#GUC-WAL-SENDER-SHUTDOWN-TIMEOUT\"\u003e\u003ccode\u003ewal_sender_shutdown_timeout\u003c/code\u003e\u003c/a\u003e，用于限制关闭期间的副本同步等待（Andrey Silitskiy，Hayato Kuroda）\u003ca href=\"https://postgr.es/c/a8f45dee9\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e默认情况下，sender 仍会一直等待同步。\u003c/p\u003e","id":"19.0-64eb720430cf7823","identity_text":"Add server variable wal_sender_shutdown_timeout to limit replica synchronization waits during shutdown (Andrey Silitskiy, Hayato Kuroda) By default, senders still wait forever for synchronization.","part":"changes","patch_ids":["08ebe665d7e0f34213e1790cadf03a27"],"related_changes":[],"relations":[],"section":"服务器 / 流复制与恢复","section_path":["服务器","流复制与恢复"],"source_commits":["a8f45dee9"],"source_entry_id":"19.0/changes/074","source_hash":"f041fedc21d2d911223dcb4d84e0a674aa4569686f06d1f85deeea135f2a1bd5","source_url":"/docs/release/19.0/#RELEASE-19-REPLICATION","statement_hash":"9e31240cd0f7357f5add0456a9f2241263b7e5ee8e97793d13a6536581761a05","text":"新增服务器变量 wal_sender_shutdown_timeout，用于限制关闭期间的副本同步等待（Andrey Silitskiy，Hayato Kuroda）§ 默认情况下，sender 仍会一直等待同步。","title":"新增服务器变量 wal_sender_shutdown_timeout，用于限制关闭期间的副本同步等待","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["5509055d6","55cefadde","f0b3573c3"],"commit_groups":[["5509055d6"],["55cefadde"],["f0b3573c3"]],"commits":["5509055d6","55cefadde","f0b3573c3"],"cves":[],"db_id":"1bcb34dd87395b8706657d95a9d380c8","html":"\u003cp\u003e允许订阅者中存储的序列值与发布者一致（Vignesh C）\u003ca href=\"https://postgr.es/c/f0b3573c3\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/5509055d6\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/55cefadde\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e可在 \u003ca href=\"/docs/19/sql-createsubscription.html\" title=\"CREATE SUBSCRIPTION\"\u003e\u003ccode\u003eCREATE SUBSCRIPTION\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/sql-altersubscription.html\" title=\"ALTER SUBSCRIPTION\"\u003e\u003ccode\u003eALTER SUBSCRIPTION ... REFRESH PUBLICATION\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/sql-altersubscription.html\" title=\"ALTER SUBSCRIPTION\"\u003e\u003ccode\u003eALTER SUBSCRIPTION ... REFRESH SEQUENCES\u003c/code\u003e\u003c/a\u003e 中启用。后者只更新值，不更新序列存在性。函数 \u003ca href=\"/docs/19/functions-sequence.html#FUNC-PG-GET-SEQUENCE-DATA\"\u003e\u003ccode\u003epg_get_sequence_data()\u003c/code\u003e\u003c/a\u003e 可用于检查序列同步。\u003c/p\u003e","id":"19.0-a87bfb7f681749d4","identity_text":"Allow sequence values stored in subscribers to match the publisher (Vignesh C) This is enabled during CREATE SUBSCRIPTION, ALTER SUBSCRIPTION ... REFRESH PUBLICATION, and ALTER SUBSCRIPTION ... REFRESH SEQUENCES. The latter only updates values, not sequence existence. Function pg_get_sequence_data() allows inspection of sequence synchronization.","part":"changes","patch_ids":["7396c95164ecdf33b3c5be1ac8d17db2","75a3ccc0bc352fa3cf35ea1fcd009658","ba5b8b155d6cfe4af0fbdc66344dd227"],"related_changes":[{"db_id":"996e3bd3bf7e98b761d055951e1f5713","evidence":{"ambiguous_patch_ids":["7396c95164ecdf33b3c5be1ac8d17db2"],"patch_ids":["7396c95164ecdf33b3c5be1ac8d17db2"],"same_day":false},"kind":"related","label":"19beta4","source_url":"/docs/release/19.0/#RELEASE-19-LOGICAL","title":"允许针对发布执行 ALTER SUBSCRIPTION，以同步订阅端上的序列存在性，使其与发布端一致","url":"/docs/compare/?release=19.0#19.0-c3728c7f7fa4218a","version":"19.0"}],"relations":[{"evidence":{"ambiguous_patch_ids":["7396c95164ecdf33b3c5be1ac8d17db2"],"patch_ids":["7396c95164ecdf33b3c5be1ac8d17db2"],"same_day":false},"rule":2,"target":"996e3bd3bf7e98b761d055951e1f5713","type":"related"}],"section":"服务器 / 逻辑复制","section_path":["服务器","逻辑复制"],"source_commits":["5509055d6","55cefadde","f0b3573c3"],"source_entry_id":"19.0/changes/075","source_hash":"9f09aa078415ea67b6079c74b3e7a62a610d470763926babca29ef1182402f68","source_url":"/docs/release/19.0/#RELEASE-19-LOGICAL","statement_hash":"c563c445b3e3a69a7e0fda4a2cd8bc8569be441cc025ac431f63a6f4608f6ff3","text":"允许订阅者中存储的序列值与发布者一致（Vignesh C）§§§ 可在 CREATE SUBSCRIPTION、ALTER SUBSCRIPTION ... REFRESH PUBLICATION 和 ALTER SUBSCRIPTION ... REFRESH SEQUENCES 中启用。后者只更新值，不更新序列存在性。函数 pg_get_sequence_data() 可用于检查序列同步。","title":"允许订阅者中存储的序列值与发布者一致","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["96b378497"],"commit_groups":[["96b378497"]],"commits":["96b378497"],"cves":[],"db_id":"bcd2c7510de55a68e35c9f1706065cdc","html":"\u003cp\u003e允许 \u003ca href=\"/docs/19/sql-createpublication.html\" title=\"CREATE PUBLICATION\"\u003e\u003ccode\u003eCREATE\u003c/code\u003e\u003c/a\u003e/\u003ca href=\"/docs/19/sql-alterpublication.html\" title=\"ALTER PUBLICATION\"\u003e\u003ccode\u003eALTER PUBLICATION\u003c/code\u003e\u003c/a\u003e 发布所有序列（Vignesh C，Tomas Vondra）\u003ca href=\"https://postgr.es/c/96b378497\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此功能通过 \u003ccode\u003eALL SEQUENCES\u003c/code\u003e 子句启用。\u003c/p\u003e","id":"19.0-3b2ad2c40d11ee7d","identity_text":"Allow CREATE/ALTER PUBLICATION to publish all sequences (Vignesh C, Tomas Vondra) This is enabled with the ALL SEQUENCES clause.","part":"changes","patch_ids":["bbabaab10a2510ae96a8a0ebf6cde506"],"related_changes":[],"relations":[],"section":"服务器 / 逻辑复制","section_path":["服务器","逻辑复制"],"source_commits":["96b378497"],"source_entry_id":"19.0/changes/076","source_hash":"9b69c386997655647beb8bc0fee83b1bab50a968b584732f01516c72429673a2","source_url":"/docs/release/19.0/#RELEASE-19-LOGICAL","statement_hash":"dc7e697f8265c2a641e236dfb948a4a9c664ff306099fef7d6b46615a71f6ab7","text":"允许 CREATE/ALTER PUBLICATION 发布所有序列（Vignesh C，Tomas Vondra）§ 此功能通过 ALL SEQUENCES 子句启用。","title":"允许 CREATE/ALTER PUBLICATION 发布所有序列","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["f0b3573c3"],"commit_groups":[["f0b3573c3"]],"commits":["f0b3573c3"],"cves":[],"db_id":"996e3bd3bf7e98b761d055951e1f5713","html":"\u003cp\u003e允许针对发布执行 \u003ca href=\"/docs/19/sql-altersubscription.html\" title=\"ALTER SUBSCRIPTION\"\u003e\u003ccode\u003eALTER SUBSCRIPTION\u003c/code\u003e\u003c/a\u003e，以同步订阅端上的序列存在性，使其与发布端一致（Vignesh C）\u003ca href=\"https://postgr.es/c/f0b3573c3\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e通过 \u003ccode\u003eREFRESH SEQUENCES\u003c/code\u003e 子句启用此功能。\u003c/p\u003e","id":"19.0-c3728c7f7fa4218a","identity_text":"Allow ALTER SUBSCRIPTION on publications to synchronize the existence of sequences on subscribers to match the publisher (Vignesh C) This is enabled with the REFRESH SEQUENCES clause.","part":"changes","patch_ids":["7396c95164ecdf33b3c5be1ac8d17db2"],"related_changes":[{"db_id":"1bcb34dd87395b8706657d95a9d380c8","evidence":{"ambiguous_patch_ids":["7396c95164ecdf33b3c5be1ac8d17db2"],"patch_ids":["7396c95164ecdf33b3c5be1ac8d17db2"],"same_day":false},"kind":"related","label":"19beta4","source_url":"/docs/release/19.0/#RELEASE-19-LOGICAL","title":"允许订阅者中存储的序列值与发布者一致","url":"/docs/compare/?release=19.0#19.0-a87bfb7f681749d4","version":"19.0"}],"relations":[{"evidence":{"ambiguous_patch_ids":["7396c95164ecdf33b3c5be1ac8d17db2"],"patch_ids":["7396c95164ecdf33b3c5be1ac8d17db2"],"same_day":false},"rule":2,"target":"1bcb34dd87395b8706657d95a9d380c8","type":"related"}],"section":"服务器 / 逻辑复制","section_path":["服务器","逻辑复制"],"source_commits":["f0b3573c3"],"source_entry_id":"19.0/changes/077","source_hash":"f4844fb9e2636fc38fec0e95b86852d706e56d6c194ba248889c29bee565099d","source_url":"/docs/release/19.0/#RELEASE-19-LOGICAL","statement_hash":"ba372e33556cba1bdbe885f8e042be73fa28b81551562a51792dd829c022c4b9","text":"允许针对发布执行 ALTER SUBSCRIPTION，以同步订阅端上的序列存在性，使其与发布端一致（Vignesh C）§ 通过 REFRESH SEQUENCES 子句启用此功能。","title":"允许针对发布执行 ALTER SUBSCRIPTION，以同步订阅端上的序列存在性，使其与发布端一致","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["493f8c643","5984ea868","6b0550c45","fd366065e"],"commit_groups":[["493f8c643"],["5984ea868"],["6b0550c45"],["fd366065e"]],"commits":["493f8c643","5984ea868","6b0550c45","fd366065e"],"cves":[],"db_id":"1427e7989a842983af15cb751ae5f406","html":"\u003cp\u003e允许 \u003ca href=\"/docs/19/sql-createpublication.html\" title=\"CREATE PUBLICATION\"\u003e\u003ccode\u003eCREATE\u003c/code\u003e\u003c/a\u003e/\u003ca href=\"/docs/19/sql-alterpublication.html\" title=\"ALTER PUBLICATION\"\u003e\u003ccode\u003eALTER PUBLICATION\u003c/code\u003e\u003c/a\u003e 排除某些表（Vignesh C，Shlok Kyal）\u003ca href=\"https://postgr.es/c/493f8c643\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/6b0550c45\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/fd366065e\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/5984ea868\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e该功能通过 \u003ccode\u003eEXCEPT\u003c/code\u003e 子句控制，在指定 \u003ccode\u003eALL TABLES\u003c/code\u003e 时尤其有用。\u003c/p\u003e","id":"19.0-fbe241b2726d6df5","identity_text":"Allow CREATE/ALTER PUBLICATION to exclude some tables (Vignesh C, Shlok Kyal) This is controlled with the EXCEPT clause, and is useful when specifying ALL TABLES.","part":"changes","patch_ids":["0cc6456fa8230d1d1c8abfc4830c412c","4c8d1d6d522d1fa72b10f6199add0dae","aa0b79f04fd24f394e1bab0e0bacd569","cb0a176eb8ce94beca71d1b54ed6b044"],"related_changes":[],"relations":[],"section":"服务器 / 逻辑复制","section_path":["服务器","逻辑复制"],"source_commits":["493f8c643","5984ea868","6b0550c45","fd366065e"],"source_entry_id":"19.0/changes/078","source_hash":"0de1497e8d29c5a4aeb513914368dbc21745118d78d5885334c14eb0159ef2da","source_url":"/docs/release/19.0/#RELEASE-19-LOGICAL","statement_hash":"24c8ffacbc9b8016d921e666d8c2941e4f7b5186c872d16d56b00b545261893f","text":"允许 CREATE/ALTER PUBLICATION 排除某些表（Vignesh C，Shlok Kyal）§§§§ 该功能通过 EXCEPT 子句控制，在指定 ALL TABLES 时尤其有用。","title":"允许 CREATE/ALTER PUBLICATION 排除某些表","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["0d48d393d","228c37086","a850be2fe"],"commit_groups":[["0d48d393d"],["228c37086"],["a850be2fe"]],"commits":["0d48d393d","228c37086","a850be2fe"],"cves":[],"db_id":"dd5f5929f31ea1804fa29e15ecb4f18d","html":"\u003cp\u003e为 \u003ca href=\"/docs/19/sql-createsubscription.html\" title=\"CREATE SUBSCRIPTION\"\u003e\u003ccode\u003eCREATE\u003c/code\u003e\u003c/a\u003e/\u003ca href=\"/docs/19/sql-altersubscription.html\" title=\"ALTER SUBSCRIPTION\"\u003e\u003ccode\u003eALTER SUBSCRIPTION\u003c/code\u003e\u003c/a\u003e 新增设置 \u003ca href=\"/docs/19/sql-createsubscription.html#SQL-CREATESUBSCRIPTION-PARAMS-WITH-RETAIN-DEAD-TUPLES\"\u003e\u003ccode\u003eretain_dead_tuples\u003c/code\u003e\u003c/a\u003e，用于保留冲突检测所需的信息（Zhijie Hou）\u003ca href=\"https://postgr.es/c/228c37086\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/0d48d393d\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/a850be2fe\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e同时新增设置 \u003ca href=\"/docs/19/sql-createsubscription.html#SQL-CREATESUBSCRIPTION-PARAMS-WITH-MAX-RETENTION-DURATION\"\u003e\u003ccode\u003emax_retention_duration\u003c/code\u003e\u003c/a\u003e，用于限制 \u003ccode\u003eretain_dead_tuples\u003c/code\u003e 的保留时间。\u003c/p\u003e","id":"19.0-7698dbd9370caee7","identity_text":"Add CREATE/ALTER SUBSCRIPTION setting retain_dead_tuples to retain information needed for conflict detection (Zhijie Hou) Also add setting max_retention_duration to limit retain_dead_tuples retention.","part":"changes","patch_ids":["09547163b0a75be144bc2b3b8ce00313","853a232d0ea1e00bce5d08b65c0617bd","a43f06af255c6d3e05fd6bd4199d1a4d"],"related_changes":[],"relations":[],"section":"服务器 / 逻辑复制","section_path":["服务器","逻辑复制"],"source_commits":["0d48d393d","228c37086","a850be2fe"],"source_entry_id":"19.0/changes/079","source_hash":"f974b2519f95c5aac7fddc360e4b12efd1a9b3e267363b398ba7d49fc5e96945","source_url":"/docs/release/19.0/#RELEASE-19-LOGICAL","statement_hash":"55936f865412ede59d3c85f0b4d0644af7a4caac91a936d93d398f109a24808a","text":"为 CREATE/ALTER SUBSCRIPTION 新增设置 retain_dead_tuples，用于保留冲突检测所需的信息（Zhijie Hou）§ § § 同时新增设置 max_retention_duration，用于限制 retain_dead_tuples 的保留时间。","title":"为 CREATE/ALTER SUBSCRIPTION 新增设置 retain_dead_tuples，用于保留冲突检测所需的信息","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["8185bb534"],"commit_groups":[["8185bb534"]],"commits":["8185bb534"],"cves":[],"db_id":"47e454508abec09ac7daa7c10f5ece63","html":"\u003cp\u003e允许 \u003ca href=\"/docs/19/sql-createsubscription.html\" title=\"CREATE SUBSCRIPTION\"\u003e\u003ccode\u003eCREATE SUBSCRIPTION\u003c/code\u003e\u003c/a\u003e 使用\u003ca href=\"/docs/19/postgres-fdw.html\" title=\"F.40. postgres_fdw — 访问存储在外部 PostgreSQL 服务器中的数据\"\u003epostgres_fdw\u003c/a\u003e外部数据包装器连接参数（Jeff Davis）\u003ca href=\"https://postgr.es/c/8185bb534\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e连接参数通过 \u003ca href=\"/docs/19/sql-createsubscription.html\" title=\"CREATE SUBSCRIPTION\"\u003e\u003ccode\u003eCREATE SUBSCRIPTION ... SERVER\u003c/code\u003e\u003c/a\u003e 引用。\u003c/p\u003e","id":"19.0-8af09db87ea2dee8","identity_text":"Allow CREATE SUBSCRIPTION to use postgres-fdw foreign data wrapper connection parameters (Jeff Davis) The connection parameters are referenced via CREATE SUBSCRIPTION ... SERVER.","part":"changes","patch_ids":["febd0018cba9b0e2ffbea6dcc5062e97"],"related_changes":[{"db_id":"5f133f6beeea4e4cfc7c17b4fc43de69","evidence":{"ambiguous_patch_ids":["febd0018cba9b0e2ffbea6dcc5062e97"],"patch_ids":["febd0018cba9b0e2ffbea6dcc5062e97"],"same_day":false},"kind":"related","label":"19beta4","source_url":"/docs/release/19.0/#RELEASE-19-UTILITY","title":"新增 CONNECTION 子句到 CREATE FOREIGN DATA WRAPPER，用于指定将为订阅连接参数调用的函数","url":"/docs/compare/?release=19.0#19.0-e8531725126db94b","version":"19.0"}],"relations":[{"evidence":{"ambiguous_patch_ids":["febd0018cba9b0e2ffbea6dcc5062e97"],"patch_ids":["febd0018cba9b0e2ffbea6dcc5062e97"],"same_day":false},"rule":2,"target":"5f133f6beeea4e4cfc7c17b4fc43de69","type":"related"}],"section":"服务器 / 逻辑复制","section_path":["服务器","逻辑复制"],"source_commits":["8185bb534"],"source_entry_id":"19.0/changes/080","source_hash":"5b59a781b1ae38d4a222ffe38b2c4316f3e5eeb8064465fad551e729ace5fcc4","source_url":"/docs/release/19.0/#RELEASE-19-LOGICAL","statement_hash":"852b9e6768aabc1f7c2ba1560b8e9081767eb0bdb63c10c78dff5f1f945a53bb","text":"允许 CREATE SUBSCRIPTION 使用postgres_fdw外部数据包装器连接参数（Jeff Davis）§ 连接参数通过 CREATE SUBSCRIPTION ... SERVER 引用。","title":"允许 CREATE SUBSCRIPTION 使用postgres_fdw外部数据包装器连接参数","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["67c20979c"],"commit_groups":[["67c20979c"]],"commits":["67c20979c"],"cves":[],"db_id":"b156408eaee32da05c4e148c9ad5cb4e","html":"\u003cp\u003e当 \u003ca href=\"/docs/19/runtime-config-wal.html#GUC-WAL-LEVEL\"\u003e\u003ccode\u003ewal_level\u003c/code\u003e\u003c/a\u003e 为 \"\u003ccode\u003ereplica\u003c/code\u003e\" 时，允许在需要时自动启用逻辑复制（Masahiko Sawada）\u003ca href=\"https://postgr.es/c/67c20979c\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e新增的服务器变量 \u003ca href=\"/docs/19/runtime-config-preset.html#GUC-EFFECTIVE-WAL-LEVEL\"\u003e\u003ccode\u003eeffective_wal_level\u003c/code\u003e\u003c/a\u003e，以及程序\u003ca href=\"/docs/19/app-pgcontroldata.html\" title=\"pg_controldata\"\u003e\u003cspan\u003epg_controldata\u003c/span\u003e\u003c/a\u003e和函数 \u003ca href=\"/docs/19/functions-info.html#FUNCTIONS-PG-CONTROL-CHECKPOINT\" title=\"表 9.90. pg_control_checkpoint 输出列\"\u003e\u003ccode\u003epg_control_checkpoint()\u003c/code\u003e\u003c/a\u003e，都会报告有效 \u003cacronym\u003eWAL\u003c/acronym\u003e 级别。\u003c/p\u003e","id":"19.0-f0a2911ec12b1891","identity_text":"When server variable wal_level is replica, allow automatic enablement of logical replication when needed (Masahiko Sawada) New server variable effective_wal_level, application pg_controldata, and function pg_control_checkpoint() report the effective WAL level.","part":"changes","patch_ids":["1b447ce3fc7c212bd0078cbf09acbada"],"related_changes":[],"relations":[],"section":"服务器 / 逻辑复制","section_path":["服务器","逻辑复制"],"source_commits":["67c20979c"],"source_entry_id":"19.0/changes/081","source_hash":"f54aa21d322b5e6cb226b1ba121bfe28deaa378fb85d008cf390f29a8eca5e7f","source_url":"/docs/release/19.0/#RELEASE-19-LOGICAL","statement_hash":"fb8817161b2c95ca04bc5e654fe4ff0277fffbd2d23afd38885de50ebbc5f9d3","text":"当 wal_level 为 \"replica\" 时，允许在需要时自动启用逻辑复制（Masahiko Sawada）§ 新增的服务器变量 effective_wal_level，以及程序pg_controldata和函数 pg_control_checkpoint()，都会报告有效 WAL 级别。","title":"当 wal_level 为 \"replica\" 时，允许在需要时自动启用逻辑复制","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["8a6af3ad0","fb80f388f"],"commit_groups":[["8a6af3ad0"],["fb80f388f"]],"commits":["8a6af3ad0","fb80f388f"],"cves":[],"db_id":"fff6b4278c91db1954d8a063023528f7","html":"\u003cp\u003e允许按订阅和用户设置 \u003ca href=\"/docs/19/runtime-config-replication.html#GUC-WAL-RECEIVER-TIMEOUT\"\u003e\u003ccode\u003ewal_receiver_timeout\u003c/code\u003e\u003c/a\u003e（Fujii Masao）\u003ca href=\"https://postgr.es/c/8a6af3ad0\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/fb80f388f\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这允许不同订阅端使用不同的 \u003ca href=\"/docs/19/runtime-config-replication.html#GUC-WAL-RECEIVER-TIMEOUT\"\u003e\u003ccode\u003ewal_receiver_timeout\u003c/code\u003e\u003c/a\u003e 值。\u003c/p\u003e","id":"19.0-85073c238ff45842","identity_text":"Allow wal_receiver_timeout to be set per-subscription and user (Fujii Masao) This allows subscribers to use different wal_receiver_timeout values.","part":"changes","patch_ids":["4762611feb8b656d7d6576e269990dbc","9b99cbeed684d26ae90dd81120affee5"],"related_changes":[],"relations":[],"section":"服务器 / 逻辑复制","section_path":["服务器","逻辑复制"],"source_commits":["8a6af3ad0","fb80f388f"],"source_entry_id":"19.0/changes/082","source_hash":"b5d367b96ca6484ffda31390e759a24cc6f2f77736a0faf4f738e66f3bc52cd0","source_url":"/docs/release/19.0/#RELEASE-19-LOGICAL","statement_hash":"a975a735faf6ba59286ec0651e9050d9e76e6a39880097aca6149a2f5a313191","text":"允许按订阅和用户设置 wal_receiver_timeout（Fujii Masao）§§ 这允许不同订阅端使用不同的 wal_receiver_timeout 值。","title":"允许按订阅和用户设置 wal_receiver_timeout","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["5b148706c"],"commit_groups":[["5b148706c"]],"commits":["5b148706c"],"cves":[],"db_id":"10e10044a97f6745d8d2a55bb0a4a335","html":"\u003cp\u003e新增可选 pid 参数到 \u003ca href=\"/docs/19/functions-admin.html#PG-REPLICATION-ORIGIN-SESSION-SETUP\"\u003e\u003ccode\u003epg_replication_origin_session_setup()\u003c/code\u003e\u003c/a\u003e，以允许 \u003cacronym\u003eSQL\u003c/acronym\u003e 级复制方案并行化（Doruk Yilmaz，Hayato Kuroda）\u003ca href=\"https://postgr.es/c/5b148706c\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-6f7107a4eb17af78","identity_text":"Add optional pid parameter to pg_replication_origin_session_setup() to allow parallelization of SQL-level replication solutions (Doruk Yilmaz, Hayato Kuroda)","part":"changes","patch_ids":["6f814eee337708f4b09c14341d2d4d56"],"related_changes":[],"relations":[],"section":"服务器 / 逻辑复制","section_path":["服务器","逻辑复制"],"source_commits":["5b148706c"],"source_entry_id":"19.0/changes/083","source_hash":"6cf0cc99aa0de0d81c2c485689858b16ca6e18ff12b32acd03cdef1406881557","source_url":"/docs/release/19.0/#RELEASE-19-LOGICAL","statement_hash":"1ef80b924bc3348cedd377c2225455261f04f7fb4d562626cbaa193aee11d86b","text":"新增可选 pid 参数到 pg_replication_origin_session_setup()，以允许 SQL 级复制方案并行化（Doruk Yilmaz，Hayato Kuroda）§","title":"新增可选 pid 参数到 pg_replication_origin_session_setup()，以允许 SQL 级复制方案并行化","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["415100aa6"],"commit_groups":[["415100aa6"]],"commits":["415100aa6"],"cves":[],"db_id":"7b826edf8ca7e11fa78fcdb327a6542f","html":"\u003cp\u003e允许 \u003ccode\u003eGROUP BY\u003c/code\u003e 处理目标列表中的子查询，即使其中的表达式引用了子查询之外的列（Tom Lane）\u003ca href=\"https://postgr.es/c/415100aa6\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e同时修复了 \u003ca href=\"/docs/19/functions-aggregate.html#FUNCTIONS-GROUPING-TABLE\" title=\"表 9.67. 分组操作\"\u003e\u003ccode\u003eGROUPING()\u003c/code\u003e\u003c/a\u003e 处理目标列表中的子查询别名时的一个 bug。\u003c/p\u003e","id":"19.0-8df9a60d26022ffb","identity_text":"Allow GROUP BY to process target list subqueries that have expressions referencing non-subquery columns (Tom Lane) Also fix a bug in how GROUPING() handles target list subquery aliases.","part":"changes","patch_ids":["ff9a81072e25cbb2930ae0d12bea809e"],"related_changes":[],"relations":[],"section":"查询命令","section_path":["查询命令"],"source_commits":["415100aa6"],"source_entry_id":"19.0/changes/084","source_hash":"c969b731a919d4ee9e9931d9dada8bf77efa7eb7867882237d8059c12abbfb8d","source_url":"/docs/release/19.0/#RELEASE-19-QUERY","statement_hash":"2eeda24a87cfc5d18569e86160dfbbe9f810adef674ac89d561dc2bccf0ab1b5","text":"允许 GROUP BY 处理目标列表中的子查询，即使其中的表达式引用了子查询之外的列（Tom Lane）§ 同时修复了 GROUPING() 处理目标列表中的子查询别名时的一个 bug。","title":"允许 GROUP BY 处理目标列表中的子查询，即使其中的表达式引用了子查询之外的列","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["25a30bbd4"],"commit_groups":[["25a30bbd4"]],"commits":["25a30bbd4"],"cves":[],"db_id":"fc76c9ab338b764d42fe01dbcc5fab7a","html":"\u003cp\u003e允许\u003ca href=\"/docs/19/functions-window.html\" title=\"9.23. 窗口函数\"\u003e窗口函数\u003c/a\u003e使用 \u003ccode\u003eIGNORE NULLS\u003c/code\u003e/\u003ccode\u003eRESPECT NULLS\u003c/code\u003e 子句忽略 NULL（Oliver Ford，Tatsuo Ishii）\u003ca href=\"https://postgr.es/c/25a30bbd4\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e支持的窗口函数有 \u003ccode\u003elead()\u003c/code\u003e、\u003ccode\u003elag()\u003c/code\u003e、\u003ccode\u003efirst_value()\u003c/code\u003e、\u003ccode\u003elast_value()\u003c/code\u003e 和 \u003ccode\u003enth_value()\u003c/code\u003e。\u003c/p\u003e","id":"19.0-45dd0b4675226480","identity_text":"Allow window functions to ignore NULLs with the IGNORE NULLS/RESPECT NULLS clause (Oliver Ford, Tatsuo Ishii) Supported window functions are lead(), lag(), first_value(), last_value(), and nth_value().","part":"changes","patch_ids":["0cbae49839826de1b9c942edadae0056"],"related_changes":[],"relations":[],"section":"查询命令","section_path":["查询命令"],"source_commits":["25a30bbd4"],"source_entry_id":"19.0/changes/085","source_hash":"4ed93af241880bc752b234d5be9d13f0e22f846a5b267d7bcb8ab33ba7b66bd5","source_url":"/docs/release/19.0/#RELEASE-19-QUERY","statement_hash":"14969c11d44f8b8e794e74c450ab41d70e5a8252162dcfc26b08db4228c7bbdd","text":"允许窗口函数使用 IGNORE NULLS/RESPECT NULLS 子句忽略 NULL（Oliver Ford，Tatsuo Ishii）§ 支持的窗口函数有 lead()、lag()、first_value()、last_value() 和 nth_value()。","title":"允许窗口函数使用 IGNORE NULLS/RESPECT NULLS 子句忽略 NULL","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["88327092f"],"commit_groups":[["88327092f"]],"commits":["88327092f"],"cves":[],"db_id":"e2a3b88e98a0effa6c84811c4014a0a5","html":"\u003cp\u003e新增 \u003ca href=\"/docs/19/sql-insert.html\" title=\"INSERT\"\u003e\u003ccode\u003eINSERT ... ON CONFLICT DO SELECT ... RETURNING\u003c/code\u003e\u003c/a\u003e 支持（Andreas Karlsson，Marko Tiikkaja，Viktor Holmberg）\u003ca href=\"https://postgr.es/c/88327092f\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这允许返回冲突行，并可选用 \u003ccode\u003eFOR UPDATE\u003c/code\u003e/\u003ccode\u003eSHARE\u003c/code\u003e 加锁。\u003c/p\u003e","id":"19.0-c8ac3f6cefddf54f","identity_text":"Add support for INSERT ... ON CONFLICT DO SELECT ... RETURNING (Andreas Karlsson, Marko Tiikkaja, Viktor Holmberg) This allows conflicting rows to be returned, and optionally locked with FOR UPDATE/SHARE.","part":"changes","patch_ids":["8f40ec27c413c9929a8aae9b9d6d2f9f"],"related_changes":[],"relations":[],"section":"查询命令","section_path":["查询命令"],"source_commits":["88327092f"],"source_entry_id":"19.0/changes/086","source_hash":"a31d264335380289e428eab9a7ff3fb352cf20d8401904d1c591637d0d678504","source_url":"/docs/release/19.0/#RELEASE-19-QUERY","statement_hash":"12622a20ef823f3e1cd7aa5d9891b3e572a5ebac45e07240eaf4e2179df0acb7","text":"新增 INSERT ... ON CONFLICT DO SELECT ... RETURNING 支持（Andreas Karlsson，Marko Tiikkaja，Viktor Holmberg）§ 这允许返回冲突行，并可选用 FOR UPDATE/SHARE 加锁。","title":"新增 INSERT ... ON CONFLICT DO SELECT ... RETURNING 支持","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["ac58465e0"],"commit_groups":[["ac58465e0"]],"commits":["ac58465e0"],"cves":[],"db_id":"8f43f4e6977627cde85434089db0dcbe","html":"\u003cp\u003e新增 \u003ca href=\"/docs/19/sql-repack.html\" title=\"REPACK\"\u003e\u003ccode\u003eREPACK\u003c/code\u003e\u003c/a\u003e 命令，用于替代 \u003ca href=\"/docs/19/sql-vacuum.html\" title=\"VACUUM\"\u003e\u003ccode\u003eVACUUM FULL\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/sql-cluster.html\" title=\"CLUSTER\"\u003e\u003ccode\u003eCLUSTER\u003c/code\u003e\u003c/a\u003e（Antonin Houska）\u003ca href=\"https://postgr.es/c/ac58465e0\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e前两个命令执行类似的操作，但名称容易引起混淆，因此将它们统一为 \u003ca href=\"/docs/19/sql-repack.html\" title=\"REPACK\"\u003e\u003ccode\u003eREPACK\u003c/code\u003e\u003c/a\u003e。旧命令仍予保留，以保持兼容性。\u003c/p\u003e","id":"19.0-2b5a7cb482da1aa9","identity_text":"Add REPACK command which replaces VACUUM FULL and CLUSTER (Antonin Houska) The two former commands did similar things, but with confusing names, so unify them as REPACK. The old commands have been retained for compatibility.","part":"changes","patch_ids":["72720531b76f8f1ae5f8cfe24294dead"],"related_changes":[],"relations":[],"section":"实用命令","section_path":["实用命令"],"source_commits":["ac58465e0"],"source_entry_id":"19.0/changes/087","source_hash":"630cec51a1602d8623f7f85c8f4365837bb6923352b6c1aafca77489a08c6cdf","source_url":"/docs/release/19.0/#RELEASE-19-UTILITY","statement_hash":"8aa8d080a5763457851b51f1b6e3fbad9975b3f716044e9630d4dfcaa39b4069","text":"新增 REPACK 命令，用于替代 VACUUM FULL 和 CLUSTER（Antonin Houska）§ 前两个命令执行类似的操作，但名称容易引起混淆，因此将它们统一为 REPACK。旧命令仍予保留，以保持兼容性。","title":"新增 REPACK 命令，用于替代 VACUUM FULL 和 CLUSTER","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["28d534e2a","8fb95a8ab","e76d8c749"],"commit_groups":[["28d534e2a"],["8fb95a8ab"],["e76d8c749"]],"commits":["28d534e2a","8fb95a8ab","e76d8c749"],"cves":[],"db_id":"4fa6b1815627146fe52e9fa63e15bab3","html":"\u003cp\u003e允许 \u003ca href=\"/docs/19/sql-repack.html\" title=\"REPACK\"\u003e\u003ccode\u003eREPACK\u003c/code\u003e\u003c/a\u003e 在不获取 ACCESS EXCLUSIVE 锁的情况下重建表（Antonin Houska，Mihail Nikalayeu，Álvaro Herrera）\u003ca href=\"https://postgr.es/c/28d534e2a\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/8fb95a8ab\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/e76d8c749\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e通过 \u003ccode\u003eCONCURRENTLY\u003c/code\u003e 选项启用。还新增了服务器变量 \u003ca href=\"/docs/19/runtime-config-replication.html#GUC-MAX-REPACK-REPLICATION-SLOTS\"\u003e\u003ccode\u003emax_repack_replication_slots\u003c/code\u003e\u003c/a\u003e。\u003c/p\u003e","id":"19.0-1012c7ab2bdf0c62","identity_text":"Allow REPACK to rebuild tables without access-exclusive locking (Antonin Houska, Mihail Nikalayeu, Álvaro Herrera) This is enabled via the CONCURRENTLY option. Server variable max_repack_replication_slots was also added.","part":"changes","patch_ids":["5470d4b92cfc988f8d5b09d391acfc28","92693606a33231c9a1b5a5ea7331dc3c","ed58e7ae4e17679a610cb766e27eabdb"],"related_changes":[],"relations":[],"section":"实用命令","section_path":["实用命令"],"source_commits":["28d534e2a","8fb95a8ab","e76d8c749"],"source_entry_id":"19.0/changes/088","source_hash":"081c3bafd32fe09532f32fb03fe4d58c1641f1f052e558c04f89901ae5b9223c","source_url":"/docs/release/19.0/#RELEASE-19-UTILITY","statement_hash":"75e285708c4cb3bba55af078faf2ad320270e52b74c12f70f18246f26317851f","text":"允许 REPACK 在不获取 ACCESS EXCLUSIVE 锁的情况下重建表（Antonin Houska，Mihail Nikalayeu，Álvaro Herrera）§§§ 通过 CONCURRENTLY 选项启用。还新增了服务器变量 max_repack_replication_slots。","title":"允许 REPACK 在不获取 ACCESS EXCLUSIVE 锁的情况下重建表","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["dd1398f13"],"commit_groups":[["dd1398f13"]],"commits":["dd1398f13"],"cves":[],"db_id":"1d507c7d53dc5fc242fe1e2c4534361a","html":"\u003cp\u003e允许 \u003ca href=\"/docs/19/sql-grant.html\" title=\"GRANT\"\u003e\u003ccode\u003eGRANT\u003c/code\u003e\u003c/a\u003e/\u003ca href=\"/docs/19/sql-revoke.html\" title=\"REVOKE\"\u003e\u003ccode\u003eREVOKE\u003c/code\u003e\u003c/a\u003e 指定执行权限调整的有效角色（Nathan Bossart，Tom Lane）\u003ca href=\"https://postgr.es/c/dd1398f13\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e通过 \u003ccode\u003eGRANTED BY\u003c/code\u003e 子句控制。\u003c/p\u003e","id":"19.0-408b6ed4fa9fd82a","identity_text":"Allow GRANT/REVOKE to specify the effective role performing the privileges adjustment (Nathan Bossart, Tom Lane) The GRANTED BY clause controls this.","part":"changes","patch_ids":["5552f58b479fba69c769bcdfa079b225"],"related_changes":[],"relations":[],"section":"实用命令","section_path":["实用命令"],"source_commits":["dd1398f13"],"source_entry_id":"19.0/changes/089","source_hash":"3a2dee1a3fd7222bc6f27819d0deb2413a9634a278d7dce7f891c6af8f2cd504","source_url":"/docs/release/19.0/#RELEASE-19-UTILITY","statement_hash":"32de521e03d44fc8a9ad53f5deb3dbfb0c896a52d61a7efe01bbd3393a281b40","text":"允许 GRANT/REVOKE 指定执行权限调整的有效角色（Nathan Bossart，Tom Lane）§ 通过 GRANTED BY 子句控制。","title":"允许 GRANT/REVOKE 指定执行权限调整的有效角色","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["404db8f9e"],"commit_groups":[["404db8f9e"]],"commits":["404db8f9e"],"cves":[],"db_id":"a030d232dae44097057e87c961e0d719","html":"\u003cp\u003e支持在 \u003ca href=\"/docs/19/sql-createschema.html\" title=\"CREATE SCHEMA\"\u003e\u003ccode\u003eCREATE SCHEMA\u003c/code\u003e\u003c/a\u003e 内的 \u003ccode\u003eFOREIGN KEY\u003c/code\u003e 约束子句中使用前向引用（Jian He，Tom Lane）\u003ca href=\"https://postgr.es/c/404db8f9e\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-3b57314d11cf41de","identity_text":"Support forward references in FOREIGN KEY constraint clauses within CREATE SCHEMA (Jian He, Tom Lane)","part":"changes","patch_ids":["417529d51611637068ea91e3a5598101"],"related_changes":[],"relations":[],"section":"实用命令","section_path":["实用命令"],"source_commits":["404db8f9e"],"source_entry_id":"19.0/changes/090","source_hash":"d92be051c84d6e86ddc18f18fd59abc10cd6814ab671684806459bd44e452a0f","source_url":"/docs/release/19.0/#RELEASE-19-UTILITY","statement_hash":"0d2d12d555ba647d0361bc0b3997cccd7bbcb911e591eae0a057ee864d34eaca","text":"支持在 CREATE SCHEMA 内的 FOREIGN KEY 约束子句中使用前向引用（Jian He，Tom Lane）§","title":"支持在 CREATE SCHEMA 内的 FOREIGN KEY 约束子句中使用前向引用","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["2f698d7f4","8d33fbacb","a4f126516"],"commit_groups":[["2f698d7f4"],["8d33fbacb"],["a4f126516"]],"commits":["2f698d7f4","8d33fbacb","a4f126516"],"cves":[],"db_id":"16c0c2ab318ab0b6abb8481c56eb3c73","html":"\u003cp\u003e允许 \u003ca href=\"/docs/19/sql-checkpoint.html\" title=\"CHECKPOINT\"\u003e\u003ccode\u003eCHECKPOINT\u003c/code\u003e\u003c/a\u003e 接受选项列表（Christoph Berg）\u003ca href=\"https://postgr.es/c/a4f126516\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/2f698d7f4\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/8d33fbacb\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e支持的选项为 \u003ccode\u003eMODE\u003c/code\u003e 和 \u003ccode\u003eFLUSH_UNLOGGED\u003c/code\u003e。\u003c/p\u003e","id":"19.0-cd8612a9c2790622","identity_text":"Allow CHECKPOINT to accept a list of options (Christoph Berg) Supported options are MODE and FLUSH_UNLOGGED.","part":"changes","patch_ids":["6530b6dd276ce99090984339db4f966a","b2ea7f4532560e0f93f946bd1ad65cf3","d5e89446328e23bde303f46ae736809a"],"related_changes":[],"relations":[],"section":"实用命令","section_path":["实用命令"],"source_commits":["2f698d7f4","8d33fbacb","a4f126516"],"source_entry_id":"19.0/changes/091","source_hash":"d644ff2d10dc9c00ea6bdccc7367cb8353977e582a571dd09c11613d4db1e645","source_url":"/docs/release/19.0/#RELEASE-19-UTILITY","statement_hash":"ae2ff63033ae887ee2e199bed6feb1e7647b6ee074f37b1e0ba6acfa534bfd7a","text":"允许 CHECKPOINT 接受选项列表（Christoph Berg）§§§ 支持的选项为 MODE 和 FLUSH_UNLOGGED。","title":"允许 CHECKPOINT 接受选项列表","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["8185bb534","90630ec42"],"commit_groups":[["8185bb534"],["90630ec42"]],"commits":["8185bb534","90630ec42"],"cves":[],"db_id":"5f133f6beeea4e4cfc7c17b4fc43de69","html":"\u003cp\u003e新增 \u003ccode\u003eCONNECTION\u003c/code\u003e 子句到 \u003ca href=\"/docs/19/sql-createforeigndatawrapper.html\" title=\"CREATE FOREIGN DATA WRAPPER\"\u003e\u003ccode\u003eCREATE FOREIGN DATA WRAPPER\u003c/code\u003e\u003c/a\u003e，用于指定将为订阅连接参数调用的函数（Jeff Davis，Noriyoshi Shinoda）\u003ca href=\"https://postgr.es/c/8185bb534\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/90630ec42\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-e8531725126db94b","identity_text":"Add CONNECTION clause to CREATE FOREIGN DATA WRAPPER to specify a function to be called for subscription connection parameters (Jeff Davis, Noriyoshi Shinoda)","part":"changes","patch_ids":["faf351cd42e202b83aa8a85635d9341f","febd0018cba9b0e2ffbea6dcc5062e97"],"related_changes":[{"db_id":"47e454508abec09ac7daa7c10f5ece63","evidence":{"ambiguous_patch_ids":["febd0018cba9b0e2ffbea6dcc5062e97"],"patch_ids":["febd0018cba9b0e2ffbea6dcc5062e97"],"same_day":false},"kind":"related","label":"19beta4","source_url":"/docs/release/19.0/#RELEASE-19-LOGICAL","title":"允许 CREATE SUBSCRIPTION 使用postgres_fdw外部数据包装器连接参数","url":"/docs/compare/?release=19.0#19.0-8af09db87ea2dee8","version":"19.0"}],"relations":[{"evidence":{"ambiguous_patch_ids":["febd0018cba9b0e2ffbea6dcc5062e97"],"patch_ids":["febd0018cba9b0e2ffbea6dcc5062e97"],"same_day":false},"rule":2,"target":"47e454508abec09ac7daa7c10f5ece63","type":"related"}],"section":"实用命令","section_path":["实用命令"],"source_commits":["8185bb534","90630ec42"],"source_entry_id":"19.0/changes/092","source_hash":"2331510708ff3568fdc62c43abaa6ebd99180a57a890a61d72b21b15de2256d2","source_url":"/docs/release/19.0/#RELEASE-19-UTILITY","statement_hash":"39146283f620f6e16d5d9cbd8d10a71b483147562f21949a6306fc1cfa4756c5","text":"新增 CONNECTION 子句到 CREATE FOREIGN DATA WRAPPER，用于指定将为订阅连接参数调用的函数（Jeff Davis，Noriyoshi Shinoda）§§","title":"新增 CONNECTION 子句到 CREATE FOREIGN DATA WRAPPER，用于指定将为订阅连接参数调用的函数","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["165aa5040"],"commit_groups":[["165aa5040"]],"commits":["165aa5040"],"cves":[],"db_id":"7f34663e8a95242f473169207150d9a7","html":"\u003cp\u003e为 \u003ca href=\"/docs/19/sql-createaggregate.html\" title=\"CREATE AGGREGATE\"\u003e\u003ccode\u003eCREATE AGGREGATE\u003c/code\u003e\u003c/a\u003e 新增 \u003ccode\u003eSUPPORT\u003c/code\u003e 子句，使扩展可以指定支持函数来优化聚合调用（Tom Lane）\u003ca href=\"https://postgr.es/c/165aa5040\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-12f838aaeeda6aa4","identity_text":"Add SUPPORT clause to CREATE AGGREGATE so extensions can specify support functions to optimize aggregate calls (Tom Lane)","part":"changes","patch_ids":["1242e00c743fcef88eeae6549eac1176"],"related_changes":[],"relations":[],"section":"实用命令","section_path":["实用命令"],"source_commits":["165aa5040"],"source_entry_id":"19.0/changes/093","source_hash":"4adbfa7e4ed74b2d875ed4083192fb236db8707a0c5c8528784ebe9d7ecc2215","source_url":"/docs/release/19.0/#RELEASE-19-UTILITY","statement_hash":"db54531e43c8455dcea0bd59907b76c1a88adc0cc3f2394613a019143d573d7f","text":"为 CREATE AGGREGATE 新增 SUPPORT 子句，使扩展可以指定支持函数来优化聚合调用（Tom Lane）§","title":"为 CREATE AGGREGATE 新增 SUPPORT 子句，使扩展可以指定支持函数来优化聚合调用","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["736f754ee","adcdbe938"],"commit_groups":[["736f754ee"],["adcdbe938"]],"commits":["736f754ee","adcdbe938"],"cves":[],"db_id":"0cdc44f7c352ccf972b3f4e4cab7ec3a","html":"\u003cp\u003e在 \u003ca href=\"/docs/19/sql-vacuum.html\" title=\"VACUUM\"\u003e\u003ccode\u003eVACUUM (VERBOSE)\u003c/code\u003e\u003c/a\u003e 和\u003ca href=\"/docs/19/routine-vacuuming.html#AUTOVACUUM\" title=\"24.1.6. 自动清理守护进程\"\u003e自动清理\u003c/a\u003e日志中新增内存使用和并行度报告（Tatsuya Kawata，Daniil Davydov）\u003ca href=\"https://postgr.es/c/736f754ee\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/adcdbe938\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-14f0420e91cf5aeb","identity_text":"Add memory usage and parallelism reporting to VACUUM (VERBOSE) and autovacuum logs (Tatsuya Kawata, Daniil Davydov)","part":"changes","patch_ids":["5eb6a0527d43cf5479bc4c9a473687e4","c374375304847fc9131392904a492452"],"related_changes":[],"relations":[],"section":"实用命令","section_path":["实用命令"],"source_commits":["736f754ee","adcdbe938"],"source_entry_id":"19.0/changes/094","source_hash":"f38585cef8c7f3c0270764dfc3e34c97746d6937951213f4b671a16953c738bb","source_url":"/docs/release/19.0/#RELEASE-19-UTILITY","statement_hash":"0b0bdf3d64a37736b65e0ec58cc8802287e0f9201ecf288c3d66011967c83d74","text":"在 VACUUM (VERBOSE) 和自动清理日志中新增内存使用和并行度报告（Tatsuya Kawata，Daniil Davydov）§§","title":"在 VACUUM (VERBOSE) 和自动清理日志中新增内存使用和并行度报告","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["342051d73"],"commit_groups":[["342051d73"]],"commits":["342051d73"],"cves":[],"db_id":"55915420081329c439adbcc41b75c155","html":"\u003cp\u003e允许使用 \u003ca href=\"/docs/19/sql-altertable.html\" title=\"ALTER TABLE\"\u003e\u003ccode\u003eALTER TABLE ALTER CONSTRAINT ... [NOT] ENFORCED\u003c/code\u003e\u003c/a\u003e 修改 \u003ccode\u003eCHECK\u003c/code\u003e 约束（Jian He）\u003ca href=\"https://postgr.es/c/342051d73\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此前只有外键约束支持更改强制执行状态。\u003c/p\u003e","id":"19.0-6802e760e47743f8","identity_text":"Allow ALTER TABLE ALTER CONSTRAINT ... [NOT] ENFORCED for CHECK constraints (Jian He) Previously enforcement changes were only supported for foreign key constraints.","part":"changes","patch_ids":["250565e38eddc1be4c0b9329b8d17ed9"],"related_changes":[],"relations":[],"section":"实用命令 / 约束","section_path":["实用命令","约束"],"source_commits":["342051d73"],"source_entry_id":"19.0/changes/095","source_hash":"59987e86b56cfee4e8c516b2af161abe361b198473f75625fa488ce050eda323","source_url":"/docs/release/19.0/#RELEASE-19-CONSTRAINTS","statement_hash":"08ad7dcf1b13ccb659e6746561b917ccdb0988d6f6241b71489006dc339388cc","text":"允许使用 ALTER TABLE ALTER CONSTRAINT ... [NOT] ENFORCED 修改 CHECK 约束（Jian He）§ 此前只有外键约束支持更改强制执行状态。","title":"允许使用 ALTER TABLE ALTER CONSTRAINT ... [NOT] ENFORCED 修改 CHECK 约束","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["f80bedd52"],"commit_groups":[["f80bedd52"]],"commits":["f80bedd52"],"cves":[],"db_id":"719650dd55687b1d229757e6fc2b2d76","html":"\u003cp\u003e允许在虚拟列上成功执行 \u003ca href=\"/docs/19/sql-altertable.html\" title=\"ALTER TABLE\"\u003e\u003ccode\u003eALTER TABLE ... COLUMN SET EXPRESSION\u003c/code\u003e\u003c/a\u003e，即使它带有 \u003ccode\u003eCHECK\u003c/code\u003e 约束（Jian He）\u003ca href=\"https://postgr.es/c/f80bedd52\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此前这是被禁止的。\u003c/p\u003e","id":"19.0-e6014fdde753cd9e","identity_text":"Allow ALTER TABLE ... COLUMN SET EXPRESSION to succeed on virtual columns with CHECK constraints (Jian He) This was previously prohibited.","part":"changes","patch_ids":["638ada60613f5b5c1d2e3938cfc3c57d"],"related_changes":[],"relations":[],"section":"实用命令 / 约束","section_path":["实用命令","约束"],"source_commits":["f80bedd52"],"source_entry_id":"19.0/changes/096","source_hash":"14269a8de80a7ac83d0de53334935a73013e09e60261599a0695a77127c07d37","source_url":"/docs/release/19.0/#RELEASE-19-CONSTRAINTS","statement_hash":"b7e3c7509d7d7a6f40c833dc8faf0c1b6189d02d88ec226ae4acae22ccc46dde","text":"允许在虚拟列上成功执行 ALTER TABLE ... COLUMN SET EXPRESSION，即使它带有 CHECK 约束（Jian He）§ 此前这是被禁止的。","title":"允许在虚拟列上成功执行 ALTER TABLE ... COLUMN SET EXPRESSION，即使它带有 CHECK 约束","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["bc2f348e8"],"commit_groups":[["bc2f348e8"]],"commits":["bc2f348e8"],"cves":[],"db_id":"9e69371e828ab9188c2acff849734796","html":"\u003cp\u003e允许 \u003ca href=\"/docs/19/sql-copy.html\" title=\"COPY\"\u003e\u003ccode\u003eCOPY FROM\u003c/code\u003e\u003c/a\u003e 跳过多行表头（Shinya Kato，Fujii Masao）\u003ca href=\"https://postgr.es/c/bc2f348e8\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此前只能跳过一行表头。\u003c/p\u003e","id":"19.0-07cba192165856da","identity_text":"Allow multiple headers lines to be skipped by COPY FROM (Shinya Kato, Fujii Masao) Previously only a single header line could be skipped.","part":"changes","patch_ids":["05e2d08f24f6389cee7e47f4b967632f"],"related_changes":[],"relations":[],"section":"实用命令 / COPY","section_path":["实用命令","COPY"],"source_commits":["bc2f348e8"],"source_entry_id":"19.0/changes/097","source_hash":"a5ea76193731276bde664acb67390f8ca66e4b28e5fe6f2356bd94e59c267a28","source_url":"/docs/release/19.0/#RELEASE-19-COPY","statement_hash":"8b018f13b141716433f2b822df1fff84f0687b9057f813d40f36d04cf818f38c","text":"允许 COPY FROM 跳过多行表头（Shinya Kato，Fujii Masao）§ 此前只能跳过一行表头。","title":"允许 COPY FROM 跳过多行表头","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["2a525cc97"],"commit_groups":[["2a525cc97"]],"commits":["2a525cc97"],"cves":[],"db_id":"21a312a7b331df0eb0ab4f6b89ed7a9a","html":"\u003cp\u003e允许 \u003ca href=\"/docs/19/sql-copy.html\" title=\"COPY\"\u003e\u003ccode\u003eCOPY FROM\u003c/code\u003e\u003c/a\u003e 把无效输入值设置为 \u003ccode\u003eNULL\u003c/code\u003e（Jian He，Kirill Reshke）\u003ca href=\"https://postgr.es/c/2a525cc97\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e通过 \u003ca href=\"/docs/19/sql-copy.html\" title=\"COPY\"\u003e\u003ccode\u003eCOPY\u003c/code\u003e\u003c/a\u003e 选项 \u003ccode\u003eON_ERROR SET_NULL\u003c/code\u003e 实现。\u003c/p\u003e","id":"19.0-7ed8f05578b99096","identity_text":"Allow COPY FROM to set invalid input values to NULL (Jian He, Kirill Reshke) This is done using the COPY option ON_ERROR SET_NULL.","part":"changes","patch_ids":["8602a6751d550c8bec8f9776978131c9"],"related_changes":[],"relations":[],"section":"实用命令 / COPY","section_path":["实用命令","COPY"],"source_commits":["2a525cc97"],"source_entry_id":"19.0/changes/098","source_hash":"411b5af6288019d0864a318b65117743e196f4be2b09d7b3b6e3d5b25b3c076c","source_url":"/docs/release/19.0/#RELEASE-19-COPY","statement_hash":"37b776ff346f7746bbc976b9ff80fa7f92e77f43be6e8fcf030e58963a57a4f9","text":"允许 COPY FROM 把无效输入值设置为 NULL（Jian He，Kirill Reshke）§ 通过 COPY 选项 ON_ERROR SET_NULL 实现。","title":"允许 COPY FROM 把无效输入值设置为 NULL","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["4c0390ac5","7dadd38cd"],"commit_groups":[["4c0390ac5"],["7dadd38cd"]],"commits":["4c0390ac5","7dadd38cd"],"cves":[],"db_id":"e626db65bdfc5b639ca4b0cbe3b065b4","html":"\u003cp\u003e允许 \u003ca href=\"/docs/19/sql-copy.html\" title=\"COPY\"\u003e\u003ccode\u003eCOPY TO\u003c/code\u003e\u003c/a\u003e 输出 \u003cacronym\u003eJSON\u003c/acronym\u003e 格式（Joe Conway，Jian He，Andrew Dunstan）\u003ca href=\"https://postgr.es/c/7dadd38cd\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/4c0390ac5\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e还可以把 \u003cacronym\u003eJSON\u003c/acronym\u003e 输出生成为单个 \u003cacronym\u003eJSON\u003c/acronym\u003e 数组，方法是使用 \u003ca href=\"/docs/19/sql-copy.html\" title=\"COPY\"\u003e\u003ccode\u003eCOPY\u003c/code\u003e\u003c/a\u003e 选项 \u003ccode\u003eFORCE_ARRAY\u003c/code\u003e。\u003c/p\u003e","id":"19.0-1006776340ef2fd6","identity_text":"Allow COPY TO to output JSON format (Joe Conway, Jian He, Andrew Dunstan) JSON output can also be a single JSON array using the COPY option FORCE_ARRAY.","part":"changes","patch_ids":["1003eee16009c6b31935c95d41625114","6044d610c82a493183f9c7c70d296766"],"related_changes":[],"relations":[],"section":"实用命令 / COPY","section_path":["实用命令","COPY"],"source_commits":["4c0390ac5","7dadd38cd"],"source_entry_id":"19.0/changes/099","source_hash":"ab055af4a41ee3cf8d0b6f8f004d9489d1ec3215b4c8114329921042bbba57fe","source_url":"/docs/release/19.0/#RELEASE-19-COPY","statement_hash":"df60771a015c095320f31f7048d459f41332f9116fc2e2044f18cca22d561d55","text":"允许 COPY TO 输出 JSON 格式（Joe Conway，Jian He，Andrew Dunstan）§ § 还可以把 JSON 输出生成为单个 JSON 数组，方法是使用 COPY 选项 FORCE_ARRAY。","title":"允许 COPY TO 输出 JSON 格式","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["266543a62","4bea91f21"],"commit_groups":[["266543a62"],["4bea91f21"]],"commits":["266543a62","4bea91f21"],"cves":[],"db_id":"8df18db3c5920c2d3bf566be085cbf59","html":"\u003cp\u003e允许 \u003ca href=\"/docs/19/sql-copy.html\" title=\"COPY\"\u003e\u003ccode\u003eCOPY TO\u003c/code\u003e\u003c/a\u003e 处理分区表（Jian He，Ajin Cherian）\u003ca href=\"https://postgr.es/c/4bea91f21\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/266543a62\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此前必须使用 \u003ca href=\"/docs/19/sql-copy.html\" title=\"COPY\"\u003e\u003ccode\u003eCOPY (SELECT ...)\u003c/code\u003e\u003c/a\u003e 才能输出分区表。这也改进了逻辑复制中的表同步。\u003c/p\u003e","id":"19.0-49731de35745273a","identity_text":"Allow COPY TO to process partitioned tables (Jian He, Ajin Cherian) Previously COPY (SELECT ...) had to be used to output partitioned tables. This also improves logical replication table synchronization.","part":"changes","patch_ids":["c5244890a1aa2e88fa88e9e30eae7984","eb19ba34134e942c28c15630c0426e62"],"related_changes":[],"relations":[],"section":"实用命令 / COPY","section_path":["实用命令","COPY"],"source_commits":["266543a62","4bea91f21"],"source_entry_id":"19.0/changes/100","source_hash":"7a4ba98538e27af3bd81def2671ad53f82e42a871643d389b015310364eac4ca","source_url":"/docs/release/19.0/#RELEASE-19-COPY","statement_hash":"dccc14b6c8331925af51c0c6ff36c27bd88b1cbf57b993533a80d9344d85a4a0","text":"允许 COPY TO 处理分区表（Jian He，Ajin Cherian）§§ 此前必须使用 COPY (SELECT ...) 才能输出分区表。这也改进了逻辑复制中的表同步。","title":"允许 COPY TO 处理分区表","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["3b1117d6e","681daed93","e157fe6f7"],"commit_groups":[["3b1117d6e"],["681daed93"],["e157fe6f7"]],"commits":["3b1117d6e","681daed93","e157fe6f7"],"cves":[],"db_id":"c9b9920fd71621cadfa3de7d17106ca3","html":"\u003cp\u003e新增 \u003ca href=\"/docs/19/sql-explain.html\" title=\"EXPLAIN\"\u003e\u003ccode\u003eEXPLAIN ANALYZE\u003c/code\u003e\u003c/a\u003e 选项 \u003ccode\u003eIO\u003c/code\u003e，用于报告异步 I/O 活动（Tomas Vondra）\u003ca href=\"https://postgr.es/c/681daed93\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/3b1117d6e\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/e157fe6f7\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-fc47b3b359c27c50","identity_text":"Add EXPLAIN ANALYZE option IO to report asynchronous IO activity (Tomas Vondra)","part":"changes","patch_ids":["745c7a44fb371afe8c071e28f06f4a6c","af71abcd051d247322ca2cd12e6de750","b9076b39125167b5cdcc0e73079d6a8e"],"related_changes":[],"relations":[],"section":"实用命令 / EXPLAIN","section_path":["实用命令","EXPLAIN"],"source_commits":["3b1117d6e","681daed93","e157fe6f7"],"source_entry_id":"19.0/changes/101","source_hash":"f8980607d55d286c44c2a04d3b3a9922e326c46c929064a5dadafbd369927376","source_url":"/docs/release/19.0/#RELEASE-19-EXPLAIN","statement_hash":"dbff7373edcc5dd7d5c612c6fd3bca3cb5adab38c509ca897095c97b0285c01d","text":"新增 EXPLAIN ANALYZE 选项 IO，用于报告异步 I/O 活动（Tomas Vondra）§§§","title":"新增 EXPLAIN ANALYZE 选项 IO，用于报告异步 I/O 活动","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["5ab0b6a24"],"commit_groups":[["5ab0b6a24"]],"commits":["5ab0b6a24"],"cves":[],"db_id":"94538c466d0b9338c05a6dea60115cfd","html":"\u003cp\u003e新增 \u003cacronym\u003eWAL\u003c/acronym\u003e \u003ca href=\"/docs/19/runtime-config-wal.html#GUC-FULL-PAGE-WRITES\"\u003e整页写入\u003c/a\u003e字节数报告到 \u003ca href=\"/docs/19/sql-explain.html\" title=\"EXPLAIN\"\u003e\u003ccode\u003eEXPLAIN (ANALYZE, WAL)\u003c/code\u003e\u003c/a\u003e 输出（Shinya Kato）\u003ca href=\"https://postgr.es/c/5ab0b6a24\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-075a42807f7dfb1b","identity_text":"Add reporting of WAL full-page write bytes to EXPLAIN (ANALYZE, WAL) output (Shinya Kato)","part":"changes","patch_ids":["0b3579e25d92b2b18f9325522f393db7"],"related_changes":[],"relations":[],"section":"实用命令 / EXPLAIN","section_path":["实用命令","EXPLAIN"],"source_commits":["5ab0b6a24"],"source_entry_id":"19.0/changes/102","source_hash":"81d3d84f5f8e85de761bdae08c324c764f3b282aaf75f9abe1031e30be1efcf3","source_url":"/docs/release/19.0/#RELEASE-19-EXPLAIN","statement_hash":"42a88618a9feab76a812fbe5b2bf9abc433def60f07cb5e9931d660906fe19e9","text":"新增 WAL 整页写入字节数报告到 EXPLAIN (ANALYZE, WAL) 输出（Shinya Kato）§","title":"新增 WAL 整页写入字节数报告到 EXPLAIN (ANALYZE, WAL) 输出","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["4bc62b868"],"commit_groups":[["4bc62b868"]],"commits":["4bc62b868"],"cves":[],"db_id":"200882adc883b5bad6075b2ec5fa4eba","html":"\u003cp\u003e在 \u003ca href=\"/docs/19/sql-explain.html\" title=\"EXPLAIN\"\u003e\u003ccode\u003eEXPLAIN\u003c/code\u003e\u003c/a\u003e 输出中新增 Memoize 缓存和查找估计值（Ilia Evdokimov，Lukas Fittl）\u003ca href=\"https://postgr.es/c/4bc62b868\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这有助于说明为什么选择了 Memoize。\u003c/p\u003e","id":"19.0-0bf95c0eca4485a9","identity_text":"Add Memoize cache and lookup estimates to EXPLAIN output (Ilia Evdokimov, Lukas Fittl) This can show why Memoize was chosen.","part":"changes","patch_ids":["362813dc72ebd4c49399fe5c80a3b8c0"],"related_changes":[],"relations":[],"section":"实用命令 / EXPLAIN","section_path":["实用命令","EXPLAIN"],"source_commits":["4bc62b868"],"source_entry_id":"19.0/changes/103","source_hash":"7ec0d59ce6bd88b207b85ec2706b87f29bdb673ed9807ee038c96b08f6907cb2","source_url":"/docs/release/19.0/#RELEASE-19-EXPLAIN","statement_hash":"8f74f54c172bca3c1e922da2e18aae3836cd815d80f79316224dfd9b1c0d5ca4","text":"在 EXPLAIN 输出中新增 Memoize 缓存和查找估计值（Ilia Evdokimov，Lukas Fittl）§ 这有助于说明为什么选择了 Memoize。","title":"在 EXPLAIN 输出中新增 Memoize 缓存和查找估计值","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["b139bd3b6"],"commit_groups":[["b139bd3b6"]],"commits":["b139bd3b6"],"cves":[],"db_id":"825a8973d33b00834597d9b46e29d115","html":"\u003cp\u003e新增 64 位无符号数据类型 \u003ca href=\"/docs/19/datatype-oid.html\" title=\"8.19. 对象标识符类型\"\u003e\u003ccode\u003eoid8\u003c/code\u003e\u003c/a\u003e（Michael Paquier）\u003ca href=\"https://postgr.es/c/b139bd3b6\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-4b82a2b1e4849c93","identity_text":"Add the 64-bit unsigned data type oid8 (Michael Paquier)","part":"changes","patch_ids":["e0b7170809704e61b7933051991bf328"],"related_changes":[],"relations":[],"section":"数据类型","section_path":["数据类型"],"source_commits":["b139bd3b6"],"source_entry_id":"19.0/changes/104","source_hash":"bb9f122a829c2adbe907b7ce615e5881637a55dd3511e8957a1d3ace8d9abd0a","source_url":"/docs/release/19.0/#RELEASE-19-DATATYPES","statement_hash":"201885b92aa138aa45d3ce8ed717f2e400c3924a7053d55fdd541a3c9fd94a94","text":"新增 64 位无符号数据类型 oid8（Michael Paquier）§","title":"新增 64 位无符号数据类型 oid8","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["bd4f879a9"],"commit_groups":[["bd4f879a9"]],"commits":["bd4f879a9"],"cves":[],"db_id":"19676c3c340ca8cc7c37a53c4e91b032","html":"\u003cp\u003e新增更多 \u003ca href=\"/docs/19/datatype-json.html#DATATYPE-JSONPATH\" title=\"8.14.7. jsonpath 类型\"\u003e\u003ccode\u003ejsonpath\u003c/code\u003e\u003c/a\u003e 字符串方法（Florents Tselai，David E. Wheeler）\u003ca href=\"https://postgr.es/c/bd4f879a9\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e包括 \u003ca href=\"/docs/19/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS\" title=\"9.17.2.3. SQL/JSON 路径操作符和方法\"\u003e\u003ccode\u003eltrim()\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS\" title=\"9.17.2.3. SQL/JSON 路径操作符和方法\"\u003e\u003ccode\u003ertrim()\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS\" title=\"9.17.2.3. SQL/JSON 路径操作符和方法\"\u003e\u003ccode\u003ebtrim()\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS\" title=\"9.17.2.3. SQL/JSON 路径操作符和方法\"\u003e\u003ccode\u003elower()\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS\" title=\"9.17.2.3. SQL/JSON 路径操作符和方法\"\u003e\u003ccode\u003eupper()\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS\" title=\"9.17.2.3. SQL/JSON 路径操作符和方法\"\u003e\u003ccode\u003einitcap()\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS\" title=\"9.17.2.3. SQL/JSON 路径操作符和方法\"\u003e\u003ccode\u003ereplace()\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS\" title=\"9.17.2.3. SQL/JSON 路径操作符和方法\"\u003e\u003ccode\u003esplit_part()\u003c/code\u003e\u003c/a\u003e。它们与非 \u003cacronym\u003eJSON\u003c/acronym\u003e 字符串变体一样是不可变的。\u003c/p\u003e","id":"19.0-af2743eff0e34fa0","identity_text":"Add more jsonpath string methods (Florents Tselai, David E. Wheeler) They are ltrim(), rtrim(), btrim(), lower(), upper(), initcap(), replace(), and split_part(). These are immutable like their non-JSON string variants.","part":"changes","patch_ids":["85a7c4c070b81548aa43b56e93d9f013"],"related_changes":[],"relations":[],"section":"数据类型","section_path":["数据类型"],"source_commits":["bd4f879a9"],"source_entry_id":"19.0/changes/105","source_hash":"2cf3c11635bfb1c2cd384a1b312c49b6516d00eca48ecb45b545269d26488dc6","source_url":"/docs/release/19.0/#RELEASE-19-DATATYPES","statement_hash":"5ac1fb152d58dea8d0216ca7dc5ce2e5030cbc15d1c1d24f537021440e9d453e","text":"新增更多 jsonpath 字符串方法（Florents Tselai，David E. Wheeler）§ 包括 ltrim()、rtrim()、btrim()、lower()、upper()、initcap()、replace() 和 split_part()。它们与非 JSON 字符串变体一样是不可变的。","title":"新增更多 jsonpath 字符串方法","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["ba21f5bf8"],"commit_groups":[["ba21f5bf8"]],"commits":["ba21f5bf8"],"cves":[],"db_id":"57e8f049fc17a1ebfa78a069f87af9d5","html":"\u003cp\u003e允许在 \u003ca href=\"/docs/19/datatype-binary.html\" title=\"8.4. 二进制数据类型\"\u003e\u003ccode\u003ebytea\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/datatype-uuid.html\" title=\"8.12. UUID类型\"\u003e\u003ccode\u003euuid\u003c/code\u003e\u003c/a\u003e 之间进行类型转换（Dagfinn Ilmari Mannsåker，Aleksander Alekseev）\u003ca href=\"https://postgr.es/c/ba21f5bf8\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-dd70e63a54f95305","identity_text":"Allow casts between bytea and uuid data types (Dagfinn Ilmari Mannsåker, Aleksander Alekseev)","part":"changes","patch_ids":["79dfe5a7aa3ae37007d07b69656134ad"],"related_changes":[],"relations":[],"section":"数据类型","section_path":["数据类型"],"source_commits":["ba21f5bf8"],"source_entry_id":"19.0/changes/106","source_hash":"c7ce78cdd015de9b3fedd176296573eb251272d7cefc64b5876705fec2da7fd9","source_url":"/docs/release/19.0/#RELEASE-19-DATATYPES","statement_hash":"1a7732ecad352f8f83f7f60e962966a4196990275053699ac9d410e3584cd499","text":"允许在 bytea 和 uuid 之间进行类型转换（Dagfinn Ilmari Mannsåker，Aleksander Alekseev）§","title":"允许在 bytea 和 uuid 之间进行类型转换","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["bd09f024a"],"commit_groups":[["bd09f024a"]],"commits":["bd09f024a"],"cves":[],"db_id":"fa6edc92ae5927848154347862d836e2","html":"\u003cp\u003e允许使用 \u003ca href=\"/docs/19/datatype-oid.html\" title=\"8.19. 对象标识符类型\"\u003e\u003ccode\u003eregdatabase\u003c/code\u003e\u003c/a\u003e 在数据库名和 \u003ca href=\"/docs/19/datatype-oid.html\" title=\"8.19. 对象标识符类型\"\u003e\u003ccode\u003eoid\u003c/code\u003e\u003c/a\u003e 之间转换（Ian Lawrence Barwick）\u003ca href=\"https://postgr.es/c/bd09f024a\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-1fdd2d6f6cb50ff4","identity_text":"Add ability to cast between database names and oids using regdatabase (Ian Lawrence Barwick)","part":"changes","patch_ids":["699308b41bd67d6a6194dfaa2aae2f99"],"related_changes":[],"relations":[],"section":"数据类型","section_path":["数据类型"],"source_commits":["bd09f024a"],"source_entry_id":"19.0/changes/107","source_hash":"aa215150f023f58369e6d04698fa8ebd6f2744c972261292d0a4bad2aa53b789","source_url":"/docs/release/19.0/#RELEASE-19-DATATYPES","statement_hash":"7181425fd8e60ef76072279859312846a2ce1424bb5656cdd85a4199e55d352d","text":"允许使用 regdatabase 在数据库名和 oid 之间转换（Ian Lawrence Barwick）§","title":"允许使用 regdatabase 在数据库名和 oid 之间转换","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["df6949ccf"],"commit_groups":[["df6949ccf"]],"commits":["df6949ccf"],"cves":[],"db_id":"df2a8577838b926e76c38171f060886e","html":"\u003cp\u003e新增 \u003ca href=\"/docs/19/functions-tid.html\" title=\"9.14. TID 函数\"\u003e\u003ccode\u003etid_block()\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/functions-tid.html\" title=\"9.14. TID 函数\"\u003e\u003ccode\u003etid_offset()\u003c/code\u003e\u003c/a\u003e 函数，用于从 \u003ca href=\"/docs/19/datatype-oid.html\" title=\"8.19. 对象标识符类型\"\u003e\u003ccode\u003etid\u003c/code\u003e\u003c/a\u003e 值中提取块号和偏移量（Ayush Tiwari）\u003ca href=\"https://postgr.es/c/df6949ccf\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-b73201d56dd16d2a","identity_text":"Add functions tid_block() and tid_offset() to extract block numbers and offsets from tid values (Ayush Tiwari)","part":"changes","patch_ids":["80376c5aae62da913eecf01d58b58884"],"related_changes":[],"relations":[],"section":"数据类型","section_path":["数据类型"],"source_commits":["df6949ccf"],"source_entry_id":"19.0/changes/108","source_hash":"ed777f011cb41e4521d02201190fefe2dbb70f4fd69051821e13cc8113193b05","source_url":"/docs/release/19.0/#RELEASE-19-DATATYPES","statement_hash":"c024a01d8e0c602e154f076bec837fe884838addda2499ec491b058eb813f441","text":"新增 tid_block() 和 tid_offset() 函数，用于从 tid 值中提取块号和偏移量（Ayush Tiwari）§","title":"新增 tid_block() 和 tid_offset() 函数，用于从 tid 值中提取块号和偏移量","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["9c24111c4","faf071b55"],"commit_groups":[["9c24111c4"],["faf071b55"]],"commits":["9c24111c4","faf071b55"],"cves":[],"db_id":"a285e4910874d03aac540644095cf79d","html":"\u003cp\u003e新增 \u003ca href=\"/docs/19/datatype-datetime.html\" title=\"8.5. 日期/时间类型\"\u003e\u003ccode\u003edate\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/datatype-datetime.html\" title=\"8.5. 日期/时间类型\"\u003e\u003ccode\u003etimestamp\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/datatype-datetime.html\" title=\"8.5. 日期/时间类型\"\u003e\u003ccode\u003etimestamptz\u003c/code\u003e\u003c/a\u003e 版本的 \u003ca href=\"/docs/19/functions-math.html#FUNCTIONS-MATH-RANDOM-TABLE\" title=\"表 9.6. 随机函数\"\u003e\u003ccode\u003erandom(min, max)\u003c/code\u003e\u003c/a\u003e（Damien Clochard，Dean Rasheed）\u003ca href=\"https://postgr.es/c/faf071b55\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/9c24111c4\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-7e3726de1225809f","identity_text":"Add date, timestamp, and timestamptz versions of random(min, max) (Damien Clochard, Dean Rasheed)","part":"changes","patch_ids":["407a606b6d3de896d7a98c0eb9f90fcf","c5fb9e2800842db8d8e24b8f1cc21391"],"related_changes":[],"relations":[],"section":"函数","section_path":["函数"],"source_commits":["9c24111c4","faf071b55"],"source_entry_id":"19.0/changes/109","source_hash":"a839078a3b5c4dd8be0190945641f495e688ab0f9eb757b4bd909dff67529d3e","source_url":"/docs/release/19.0/#RELEASE-19-FUNCTIONS","statement_hash":"6c33a20a9d60637e158f968566e9ba936be7ada695fd5a89621a3e2ed7efdbbf","text":"新增 date、timestamp 和 timestamptz 版本的 random(min, max)（Damien Clochard，Dean Rasheed）§§","title":"新增 date、timestamp 和 timestamptz 版本的 random(min, max)","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["497c1170c","e1d917182","e752a2ccc"],"commit_groups":[["497c1170c"],["e1d917182"],["e752a2ccc"]],"commits":["497c1170c","e1d917182","e752a2ccc"],"cves":[],"db_id":"9ef0c90664f8100114b871e837a6ea2d","html":"\u003cp\u003e允许 \u003ca href=\"/docs/19/functions-binarystring.html#FUNCTIONS-BINARYSTRING-CONVERSIONS\" title=\"表 9.13. 文本/二进制串转换函数\"\u003e\u003ccode\u003eencode()\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/functions-binarystring.html#FUNCTIONS-BINARYSTRING-CONVERSIONS\" title=\"表 9.13. 文本/二进制串转换函数\"\u003e\u003ccode\u003edecode()\u003c/code\u003e\u003c/a\u003e 处理 \u003ccode\u003ebase64url\u003c/code\u003e 和 \u003ccode\u003ebase32hex\u003c/code\u003e 格式的数据（Andrey Borodin，Aleksander Alekseev，Florents Tselai）\u003ca href=\"https://postgr.es/c/497c1170c\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/e752a2ccc\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/e1d917182\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这种格式保留顺序，不像 \u003ccode\u003ebase32\u003c/code\u003e。\u003c/p\u003e","id":"19.0-7e3776b1bc04d8fc","identity_text":"Allow encode() and decode() to process data in base64url and base32hex formats (Andrey Borodin, Aleksander Alekseev, Florents Tselai) This format retains ordering, unlike base32.","part":"changes","patch_ids":["01e6ec89475fa03fbacd633eca4b3e08","9b7afda96b453b9640644a5e36dfd6d5","f1182c1a1aefbdca98c8e39d959f9050"],"related_changes":[],"relations":[],"section":"函数","section_path":["函数"],"source_commits":["497c1170c","e1d917182","e752a2ccc"],"source_entry_id":"19.0/changes/110","source_hash":"fae527f7b48e7bcbb749e79a62475f027703ec83f13349dbbe0018d353cb5e20","source_url":"/docs/release/19.0/#RELEASE-19-FUNCTIONS","statement_hash":"c7f6c246ca3cf52c4a4de9dbb2ebd6b9c74cd949164941d7dd60fa13052c5c72","text":"允许 encode() 和 decode() 处理 base64url 和 base32hex 格式的数据（Andrey Borodin，Aleksander Alekseev，Florents Tselai）§§§ 这种格式保留顺序，不像 base32。","title":"允许 encode() 和 decode() 处理 base64url 和 base32hex 格式的数据","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["5eed8ce50"],"commit_groups":[["5eed8ce50"]],"commits":["5eed8ce50"],"cves":[],"db_id":"c7de4d92ca3a3df668d33e6dc4cbab8a","html":"\u003cp\u003e新增用于返回范围减法结果范围集的函数（Paul A. Jungwirth）\u003ca href=\"https://postgr.es/c/5eed8ce50\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e函数为 \u003ca href=\"/docs/19/functions-range.html#RANGE-FUNCTIONS-TABLE\" title=\"表 9.61. 范围函数\"\u003e\u003ccode\u003erange_minus_multi()\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/functions-range.html#MULTIRANGE-FUNCTIONS-TABLE\" title=\"表 9.62. 多范围函数\"\u003e\u003ccode\u003emultirange_minus_multi()\u003c/code\u003e\u003c/a\u003e。这对表示带间隙的范围减法结果很有用。\u003c/p\u003e","id":"19.0-802925c582f6e26e","identity_text":"Add functions to return a set of ranges resulting from range subtraction (Paul A. Jungwirth) The functions are range_minus_multi() and multirange_minus_multi(). This is useful to represent range subtraction results with gaps.","part":"changes","patch_ids":["ba1fc92e640d152257b543678fa8c705"],"related_changes":[],"relations":[],"section":"函数","section_path":["函数"],"source_commits":["5eed8ce50"],"source_entry_id":"19.0/changes/111","source_hash":"57ae7ae896ef2ffd75d849181b2f72b1a43d1b05ded0b3a216ef6bc10ecf660e","source_url":"/docs/release/19.0/#RELEASE-19-FUNCTIONS","statement_hash":"76c27dc16f5e638526a73a106fadd34648a22646f4940e45a2ec3e710f36afcd","text":"新增用于返回范围减法结果范围集的函数（Paul A. Jungwirth）§ 函数为 range_minus_multi() 和 multirange_minus_multi()。这对表示带间隙的范围减法结果很有用。","title":"新增用于返回范围减法结果范围集的函数","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["2b75c38b7"],"commit_groups":[["2b75c38b7"]],"commits":["2b75c38b7"],"cves":[],"db_id":"def0cd69c9e13dfd108b029da100d566","html":"\u003cp\u003e新增函数 \u003ca href=\"/docs/19/functions-comparison.html#FUNCTIONS-COMPARISON-FUNC-TABLE\" title=\"表 9.3. 比较函数\"\u003e\u003ccode\u003eerror_on_null()\u003c/code\u003e\u003c/a\u003e，用于返回提供的参数，或在 \u003ccode\u003eNULL\u003c/code\u003e 输入时报告错误（Joel Jacobson）\u003ca href=\"https://postgr.es/c/2b75c38b7\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-e349fca28342cccb","identity_text":"Add function error_on_null() to return the supplied parameter, or error on NULL input (Joel Jacobson)","part":"changes","patch_ids":["6668deefdb92b652d44a461e17f0b45e"],"related_changes":[],"relations":[],"section":"函数","section_path":["函数"],"source_commits":["2b75c38b7"],"source_entry_id":"19.0/changes/112","source_hash":"18379dabd622e75ef2578dd813807bc8cd6e51cdd6060b11537b65747f8f659f","source_url":"/docs/release/19.0/#RELEASE-19-FUNCTIONS","statement_hash":"21543872002d12a61698a6d28fe0645e37793660d25fb3dd2469478e28cc4748","text":"新增函数 error_on_null()，用于返回提供的参数，或在 NULL 输入时报告错误（Joel Jacobson）§","title":"新增函数 error_on_null()，用于返回提供的参数，或在 NULL 输入时报告错误","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["3b4c2b9db"],"commit_groups":[["3b4c2b9db"]],"commits":["3b4c2b9db"],"cves":[],"db_id":"53286fe15e9ad2dc8248989b05a763d3","html":"\u003cp\u003e允许 \u003ca href=\"/docs/19/functions-json.html#FUNCTIONS-SQLJSON-MISC\" title=\"表 9.51. SQL/JSON 测试函数\"\u003e\u003ccode\u003eIS JSON\u003c/code\u003e\u003c/a\u003e 在定义于受支持基础类型之上的域上工作（Jian He）\u003ca href=\"https://postgr.es/c/3b4c2b9db\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e受支持的基础类型为 \u003ca href=\"/docs/19/datatype-character.html\" title=\"8.3. 字符类型\"\u003e\u003ccode\u003eTEXT\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/datatype-json.html\" title=\"8.14. JSON 类型\"\u003e\u003ccode\u003eJSON\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/datatype-json.html\" title=\"8.14. JSON 类型\"\u003e\u003ccode\u003eJSONB\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/datatype-binary.html\" title=\"8.4. 二进制数据类型\"\u003e\u003ccode\u003eBYTEA\u003c/code\u003e\u003c/a\u003e。\u003c/p\u003e","id":"19.0-d5217054d55d5050","identity_text":"Allow IS JSON to work on domains defined over supported base types (Jian He) The supported base types are TEXT, JSON, JSONB, and BYTEA.","part":"changes","patch_ids":["b6248bf8911a05e519e4612c5650e618"],"related_changes":[],"relations":[],"section":"函数","section_path":["函数"],"source_commits":["3b4c2b9db"],"source_entry_id":"19.0/changes/113","source_hash":"68c8b7e34705ae43e87ebb08523834b3a9f4d6ca2d18ccc46c31cf9167d541ec","source_url":"/docs/release/19.0/#RELEASE-19-FUNCTIONS","statement_hash":"3a96a721f9e3683ee3b83ff3d672991815bd08125fbdc312fc91e7682c35801a","text":"允许 IS JSON 在定义于受支持基础类型之上的域上工作（Jian He）§ 受支持的基础类型为 TEXT、JSON、JSONB 和 BYTEA。","title":"允许 IS JSON 在定义于受支持基础类型之上的域上工作","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["7dc95cc3b"],"commit_groups":[["7dc95cc3b"]],"commits":["7dc95cc3b"],"cves":[],"db_id":"9171286cb14dbf5806989fbcf2526528","html":"\u003cp\u003e新增波兰语和世界语的\u003ca href=\"/docs/19/textsearch-dictionaries.html#TEXTSEARCH-SNOWBALL-DICTIONARY\" title=\"12.6.6. Snowball 词典\"\u003e全文词干分析器\u003c/a\u003e（Tom Lane）\u003ca href=\"https://postgr.es/c/7dc95cc3b\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e荷兰语词干分析器也已更新。旧版荷兰语词干分析器可通过 \u003ca href=\"/docs/19/textsearch-dictionaries.html#TEXTSEARCH-SNOWBALL-DICTIONARY\" title=\"12.6.6. Snowball 词典\"\u003e\u003ccode\u003edutch_porter\u003c/code\u003e\u003c/a\u003e 使用。\u003c/p\u003e","id":"19.0-fbb07f7832f0ca58","identity_text":"Add full text stemmers for Polish and Esperanto (Tom Lane) The Dutch stemmer has also been updated. The old Dutch stemmer is available via dutch_porter.","part":"changes","patch_ids":["4db6a129a441029f8943300d8929cf11"],"related_changes":[],"relations":[],"section":"函数","section_path":["函数"],"source_commits":["7dc95cc3b"],"source_entry_id":"19.0/changes/114","source_hash":"a8037a4465dd5689ff3f4f1a0fd65569dd467f4b145a0cda0a708cc808a9b2a8","source_url":"/docs/release/19.0/#RELEASE-19-FUNCTIONS","statement_hash":"86128b5095e14f3ca0fd482d8c52bde6fa8bacc92448ee65e4280268d1c2fa23","text":"新增波兰语和世界语的全文词干分析器（Tom Lane）§ 荷兰语词干分析器也已更新。旧版荷兰语词干分析器可通过 dutch_porter 使用。","title":"新增波兰语和世界语的全文词干分析器","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["53eff471c"],"commit_groups":[["53eff471c"]],"commits":["53eff471c"],"cves":[],"db_id":"dea4d618db8f59f9a6897cebf4fd37b3","html":"\u003cp\u003e允许使用\u003ca href=\"/docs/19/plpython.html\" title=\"第 44 章 PL/Python — Python 过程语言\"\u003e\u003cspan\u003ePL/Python\u003c/span\u003e\u003c/a\u003e编写事件触发器（Euler Taveira，Dimitri Fontaine）\u003ca href=\"https://postgr.es/c/53eff471c\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-4ee4d46b86c5660c","identity_text":"Allow event triggers to be written using PL/Python (Euler Taveira, Dimitri Fontaine)","part":"changes","patch_ids":["12561dc0cbadbe3c5683a8d9fc46a72b"],"related_changes":[],"relations":[],"section":"函数","section_path":["函数"],"source_commits":["53eff471c"],"source_entry_id":"19.0/changes/115","source_hash":"77962c064a273e05efd2b61ebac298cb405f217bf9ebefeda59aee0663fbce65","source_url":"/docs/release/19.0/#RELEASE-19-FUNCTIONS","statement_hash":"e86760cae912c2895e04b314848870434aba1cd233fb99049b68bad93b6ce9cc","text":"允许使用PL/Python编写事件触发器（Euler Taveira，Dimitri Fontaine）§","title":"允许使用PL/Python编写事件触发器","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["092f3c63e"],"commit_groups":[["092f3c63e"]],"commits":["092f3c63e"],"cves":[],"db_id":"0db5717ffc9d7a38164ed481641c123a","html":"\u003cp\u003e允许 libpq 连接通过 \"\u003ca href=\"/docs/19/libpq-connect.html#LIBPQ-CONNECT-SERVICEFILE\"\u003e\u003ccode\u003eservicefile\u003c/code\u003e\u003c/a\u003e\" 指定服务文件（Torsten Förtsch，Ryo Kanbayashi）\u003ca href=\"https://postgr.es/c/092f3c63e\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-69aa41fdebdd77f0","identity_text":"Allow libpq connections to specify a service file via servicefile (Torsten Förtsch, Ryo Kanbayashi)","part":"changes","patch_ids":["affe84177ff8ca2c35697b99487d1989"],"related_changes":[],"relations":[],"section":"Libpq","section_path":["Libpq"],"source_commits":["092f3c63e"],"source_entry_id":"19.0/changes/116","source_hash":"64de18108bcc62edb500032785f0cc406dedf7ef450fe3951694658791401afa","source_url":"/docs/release/19.0/#RELEASE-19-LIBPQ","statement_hash":"6df45cd5d5c300a4d4a030864cebbac2debaa6a9e490e2a4139913931e043377","text":"允许 libpq 连接通过 \"servicefile\" 指定服务文件（Torsten Förtsch，Ryo Kanbayashi）§","title":"允许 libpq 连接通过 \"servicefile\" 指定服务文件","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["d8d7c5dc8"],"commit_groups":[["d8d7c5dc8"]],"commits":["d8d7c5dc8"],"cves":[],"db_id":"ff2b1dfe6067b31cf2bf934b7684cd23","html":"\u003cp\u003e新增用于兼容性测试的特殊 libpq 协议参数（Jelte Fennema-Nio，Jacob Champion）\u003ca href=\"https://postgr.es/c/d8d7c5dc8\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这也称为 \u003ca href=\"https://wiki.postgresql.org/wiki/Grease\"\u003eprotocol grease\u003c/a\u003e，曾在 19 beta 期间启用。从 \u003cspan\u003ePostgreSQL\u003c/span\u003e 19 正式版开始将不再发送这些参数，但相关参数保留项仍会保留，以备将来使用。\u003c/p\u003e","id":"19.0-b5fec90b8d9cccee","identity_text":"Add special libpq protocol parameters for compatibility testing (Jelte Fennema-Nio, Jacob Champion) Otherwise known as protocol grease, which was active during the 19 beta period. These will no longer be sent as of the PostgreSQL 19 official release, but the parameter reservations will remain for potential use in the future.","part":"changes","patch_ids":["3632c83c1c1a91ef0ac583beea2de520"],"related_changes":[],"relations":[],"section":"Libpq","section_path":["Libpq"],"source_commits":["d8d7c5dc8"],"source_entry_id":"19.0/changes/117","source_hash":"c5fb4bfaa74cf3b3818ee61e8d4ac15edbca103da3729cd9c38e1a7e861adec5","source_url":"/docs/release/19.0/#RELEASE-19-LIBPQ","statement_hash":"650d3c1f8b2817bbf8a3398d8b09dc4b6cdd677149d6a52b52e8eba14e0d179b","text":"新增用于兼容性测试的特殊 libpq 协议参数（Jelte Fennema-Nio，Jacob Champion）§ 这也称为 protocol grease，曾在 19 beta 期间启用。从 PostgreSQL 19 正式版开始将不再发送这些参数，但相关参数保留项仍会保留，以备将来使用。","title":"新增用于兼容性测试的特殊 libpq 协议参数","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["993368113"],"commit_groups":[["993368113"]],"commits":["993368113"],"cves":[],"db_id":"a0cb2341ae578cdafb7b9251dadd561d","html":"\u003cp\u003e新增 libpq 连接参数 \u003ca href=\"/docs/19/libpq-connect.html#LIBPQ-CONNECT-OAUTH-CA-FILE\"\u003e\u003ccode\u003eoauth_ca_file\u003c/code\u003e\u003c/a\u003e，用于在与 OAuth 提供者通信时指定其他证书颁发机构（Jonathan Gonzalez V.，Jacob Champion）\u003ca href=\"https://postgr.es/c/993368113\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e也可以通过环境变量 \u003ca href=\"/docs/19/libpq-envars.html\" title=\"32.15. 环境变量\"\u003e\u003ccode\u003ePGOAUTHCAFILE\u003c/code\u003e\u003c/a\u003e 设置。默认使用 \u003cspan\u003ecurl\u003c/span\u003e 内置证书。\u003c/p\u003e","id":"19.0-1d98b3714cb11ecb","identity_text":"Add libpq connection parameter oauth_ca_file to specify an alternate certificate authority when communicating with OAuth providers (Jonathan Gonzalez V., Jacob Champion) This can also be set via the PGOAUTHCAFILE environment variable. The default is to use curl's built-in certificates.","part":"changes","patch_ids":["74a7b12641d7fdb5c60efa36dfcc24ef"],"related_changes":[],"relations":[],"section":"Libpq","section_path":["Libpq"],"source_commits":["993368113"],"source_entry_id":"19.0/changes/118","source_hash":"a58caab2d1913301414e95545c31b26666028c916b1cded6ace13b5884164741","source_url":"/docs/release/19.0/#RELEASE-19-LIBPQ","statement_hash":"8af2e7418b174d25fc0641b554ffb9445d06fa08d16c710f4eada6b93cd948f3","text":"新增 libpq 连接参数 oauth_ca_file，用于在与 OAuth 提供者通信时指定其他证书颁发机构（Jonathan Gonzalez V.，Jacob Champion）§ 也可以通过环境变量 PGOAUTHCAFILE 设置。默认使用 curl 内置证书。","title":"新增 libpq 连接参数 oauth_ca_file，用于在与 OAuth 提供者通信时指定其他证书颁发机构","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["6d00fb904"],"commit_groups":[["6d00fb904"]],"commits":["6d00fb904"],"cves":[],"db_id":"ac594596bc1389c769f9ae799c786ec2","html":"\u003cp\u003e允许 libpq 环境变量 \u003ca href=\"/docs/19/libpq-envars.html\" title=\"32.15. 环境变量\"\u003e\u003ccode\u003ePGOAUTHDEBUG\u003c/code\u003e\u003c/a\u003e 指定具体调试选项（Zsolt Parragi，Jacob Champion）\u003ca href=\"https://postgr.es/c/6d00fb904\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eUNSAFE\u003c/code\u003e 选项仍会生成全部调试输出。\u003c/p\u003e","id":"19.0-3d4f5dde8f72bd18","identity_text":"Allow libpq environment variable PGOAUTHDEBUG to specify particular debug options (Zsolt Parragi, Jacob Champion) The UNSAFE option still generates all debugging output.","part":"changes","patch_ids":["8b76c436eb2fe30ae3510bdd034927b4"],"related_changes":[],"relations":[],"section":"Libpq","section_path":["Libpq"],"source_commits":["6d00fb904"],"source_entry_id":"19.0/changes/119","source_hash":"af5c4aa6403b9d1bb74c20e1b4a06ecbe4ec6bbda588e0f8fc99e3e27cecb6e1","source_url":"/docs/release/19.0/#RELEASE-19-LIBPQ","statement_hash":"884f800313f3dc3104168fe397c3398b3da261f97fc1294facefc62a24452bd7","text":"允许 libpq 环境变量 PGOAUTHDEBUG 指定具体调试选项（Zsolt Parragi，Jacob Champion）§ UNSAFE 选项仍会生成全部调试输出。","title":"允许 libpq 环境变量 PGOAUTHDEBUG 指定具体调试选项","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["0af4d402c","e982331b5"],"commit_groups":[["0af4d402c"],["e982331b5"]],"commits":["0af4d402c","e982331b5"],"cves":[],"db_id":"6ecc8b12dde085c9b381da550d01abb7","html":"\u003cp\u003e改进自定义 OAuth 客户端流程（Jacob Champion）\u003ca href=\"https://postgr.es/c/e982331b5\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/0af4d402c\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此前，自定义流程失败时 libpq 只报告一条通用错误消息，并且每个流程实现都必须独立计算 issuer 标识符。新增 authdata 钩子类型 \u003ca href=\"/docs/19/libpq-oauth.html#LIBPQ-OAUTH-AUTHDATA-OAUTH-BEARER-TOKEN-V2\"\u003e\u003ccode\u003ePQAUTHDATA_OAUTH_BEARER_TOKEN_V2\u003c/code\u003e\u003c/a\u003e，它会预先计算 issuer ID，并允许钩子提供错误细节。\u003c/p\u003e","id":"19.0-06a875925b7e1fe7","identity_text":"Improve custom OAuth client flows (Jacob Champion) Previously, libpq reported only a generic error message during custom flow failures, and each flow implementation was required to calculate the issuer identifier independently. Add a new authdata hook type PQAUTHDATA_OAUTH_BEARER_TOKEN_V2 that precomputes the issuer ID and lets hooks provide error details.","part":"changes","patch_ids":["00cef603f69d2b87aaada4647479e1f9","98992f20ad5f17c79ec1458bab01ed52"],"related_changes":[],"relations":[],"section":"Libpq","section_path":["Libpq"],"source_commits":["0af4d402c","e982331b5"],"source_entry_id":"19.0/changes/120","source_hash":"6ac66c5f7a369dc3e0fd25d3fdb032276fb071d828527592c5b9c3b9fd4b2935","source_url":"/docs/release/19.0/#RELEASE-19-LIBPQ","statement_hash":"e5cb1f3de5cbbecb22c3750566d0d74801fe5d7a4f74464cfb514d3c97326e20","text":"改进自定义 OAuth 客户端流程（Jacob Champion）§ § 此前，自定义流程失败时 libpq 只报告一条通用错误消息，并且每个流程实现都必须独立计算 issuer 标识符。新增 authdata 钩子类型 PQAUTHDATA_OAUTH_BEARER_TOKEN_V2，它会预先计算 issuer ID，并允许钩子提供错误细节。","title":"改进自定义 OAuth 客户端流程","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["b8d768583"],"commit_groups":[["b8d768583"]],"commits":["b8d768583"],"cves":[],"db_id":"ddedf63a2aa70db34c67ca3ebfd0db4e","html":"\u003cp\u003e新增 libpq 函数 \u003ca href=\"/docs/19/libpq-threading.html\" title=\"32.21. 多线程程序中的行为\"\u003e\u003ccode\u003ePQgetThreadLock()\u003c/code\u003e\u003c/a\u003e，用于获取当前锁回调（Jacob Champion）\u003ca href=\"https://postgr.es/c/b8d768583\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-2d877d014001d350","identity_text":"Add libpq function PQgetThreadLock() to retrieve the current locking callback (Jacob Champion)","part":"changes","patch_ids":["2d7dd199d041254f4fabcbaee9bcaeda"],"related_changes":[],"relations":[],"section":"Libpq","section_path":["Libpq"],"source_commits":["b8d768583"],"source_entry_id":"19.0/changes/121","source_hash":"b605e57baf7603c715fdd592105dd4dab4277da7891a18252729b60a8770f918","source_url":"/docs/release/19.0/#RELEASE-19-LIBPQ","statement_hash":"df92459494c7e653bc93f7bb1339e3e8ed5f706822a15207c7bb240dbc224e2f","text":"新增 libpq 函数 PQgetThreadLock()，用于获取当前锁回调（Jacob Champion）§","title":"新增 libpq 函数 PQgetThreadLock()，用于获取当前锁回调","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["b3ce55f41"],"commit_groups":[["b3ce55f41"]],"commits":["b3ce55f41"],"cves":[],"db_id":"4466a740b06e239e2c620ecf5068da5c","html":"\u003cp\u003e允许\u003ca href=\"/docs/19/app-psql.html\" title=\"psql\"\u003e\u003cspan\u003epsql\u003c/span\u003e\u003c/a\u003e通过 \u003ca href=\"/docs/19/app-psql.html#app-psql-prompting-S\"\u003e\u003ccode\u003e%S\u003c/code\u003e\u003c/a\u003e 在提示符中显示 search_path（Florents Tselai）\u003ca href=\"https://postgr.es/c/b3ce55f41\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这在\u003ca href=\"/docs/19/app-psql.html\" title=\"psql\"\u003e\u003cspan\u003epsql\u003c/span\u003e\u003c/a\u003e连接到 \u003cspan\u003ePostgreSQL\u003c/span\u003e 18 或更高版本时有效。\u003c/p\u003e","id":"19.0-798dbb9364a5d9c5","identity_text":"Allow the search path to appear in the psql prompt via %S (Florents Tselai) This works when psql is connected to PostgreSQL 18 or later.","part":"changes","patch_ids":["d4c541bb14197ec33826096426a28019"],"related_changes":[],"relations":[],"section":"psql","section_path":["psql"],"source_commits":["b3ce55f41"],"source_entry_id":"19.0/changes/122","source_hash":"eb5f3532cbd779ff0f91ab011cc454508ae5f01ff43500a5d8dbdaead990a9aa","source_url":"/docs/release/19.0/#RELEASE-19-PSQL","statement_hash":"29ab507d60b9104abb3f9325a7f1d1a4f509977ce16eaad9324ac80a3893381b","text":"允许psql通过 %S 在提示符中显示 search_path（Florents Tselai）§ 这在psql连接到 PostgreSQL 18 或更高版本时有效。","title":"允许psql通过 %S 在提示符中显示 search_path","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["dddbbc253"],"commit_groups":[["dddbbc253"]],"commits":["dddbbc253"],"cves":[],"db_id":"196935ab638708fd941313f1281c4614","html":"\u003cp\u003e允许\u003ca href=\"/docs/19/app-psql.html\" title=\"psql\"\u003e\u003cspan\u003epsql\u003c/span\u003e\u003c/a\u003e通过 \u003ca href=\"/docs/19/app-psql.html#APP-PSQL-PROMPTING-I\"\u003e\u003ccode\u003e%i\u003c/code\u003e\u003c/a\u003e 在提示符中显示热备状态（Jim Jones）\u003ca href=\"https://postgr.es/c/dddbbc253\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-2460a91e44effe22","identity_text":"Allow the hot standby status to appear in the psql prompt via %i (Jim Jones)","part":"changes","patch_ids":["c3278efe621f1e6a7560cb87e94e80b8"],"related_changes":[],"relations":[],"section":"psql","section_path":["psql"],"source_commits":["dddbbc253"],"source_entry_id":"19.0/changes/123","source_hash":"4ee27cd0c8e43dcdc75cd47abd3566022326642e7543aa4c6dac416dc262bc37","source_url":"/docs/release/19.0/#RELEASE-19-PSQL","statement_hash":"30d6f5876cda5388320afc117ed20c26e3157d5fb8b9946c8e7b404f8063b8ce","text":"允许psql通过 %i 在提示符中显示热备状态（Jim Jones）§","title":"允许psql通过 %i 在提示符中显示热备状态","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["aecc55866"],"commit_groups":[["aecc55866"]],"commits":["aecc55866"],"cves":[],"db_id":"a3c83cc4c02efda0036fe6bb03e51315","html":"\u003cp\u003e修改\u003ca href=\"/docs/19/app-psql.html\" title=\"psql\"\u003e\u003cspan\u003epsql\u003c/span\u003e\u003c/a\u003e反斜杠命令，以显示发布、订阅和扩展统计信息的注释（Fujii Masao，Jim Jones）\u003ca href=\"https://postgr.es/c/aecc55866\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e受影响的命令为 \u003ca href=\"/docs/19/app-psql.html#APP-PSQL-META-COMMAND-DRP\"\u003e\u003ccode\u003e\\dRp+\u003c/code\u003e\u003c/a\u003e、\u003ca href=\"/docs/19/app-psql.html#APP-PSQL-META-COMMAND-DRS\"\u003e\u003ccode\u003e\\dRs+\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/app-psql.html#APP-PSQL-META-COMMAND-DX-UC\"\u003e\u003ccode\u003e\\dX+\u003c/code\u003e\u003c/a\u003e。\u003c/p\u003e","id":"19.0-3a8967bead414fb3","identity_text":"Modify psql backslash commands to show comments for publications, subscriptions, and extended statistics (Fujii Masao, Jim Jones) The modified commands are \\dRp+, \\dRs+, and \\dX+.","part":"changes","patch_ids":["b5bedc52f45dc20c8d04f9bb99aea7eb"],"related_changes":[],"relations":[],"section":"psql","section_path":["psql"],"source_commits":["aecc55866"],"source_entry_id":"19.0/changes/124","source_hash":"91afa6ca29fb34baaec7b7d09a3a233e6484f1bf689a8c2bbe4a622a56383e45","source_url":"/docs/release/19.0/#RELEASE-19-PSQL","statement_hash":"00c77457236fd72b2b76ec1b032b74a97a28c583a1e0e79d257503f53a6b5981","text":"修改psql反斜杠命令，以显示发布、订阅和扩展统计信息的注释（Fujii Masao，Jim Jones）§ 受影响的命令为 \\dRp+、\\dRs+ 和 \\dX+。","title":"修改psql反斜杠命令，以显示发布、订阅和扩展统计信息的注释","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["645cb44c5"],"commit_groups":[["645cb44c5"]],"commits":["645cb44c5"],"cves":[],"db_id":"1f499376a57bb409ab9c3ca194a28e55","html":"\u003cp\u003e允许在\u003ca href=\"/docs/19/app-psql.html\" title=\"psql\"\u003e\u003cspan\u003epsql\u003c/span\u003e\u003c/a\u003e中控制 boolean 值的显示方式（David G. Johnston）\u003ca href=\"https://postgr.es/c/645cb44c5\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\\pset 变量为 \u003ca href=\"/docs/19/app-psql.html#APP-PSQL-META-COMMAND-PSET-DISPLAY-TRUE\"\u003e\u003ccode\u003edisplay_true\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/app-psql.html#APP-PSQL-META-COMMAND-PSET-DISPLAY-FALSE\"\u003e\u003ccode\u003edisplay_false\u003c/code\u003e\u003c/a\u003e。\u003c/p\u003e","id":"19.0-0504fe22c816f685","identity_text":"Allow control over how booleans are displayed in psql (David G. Johnston) The \\pset variables are display_true and display_false.","part":"changes","patch_ids":["8275ccc0647f8c3b783c82a9ee19ec6a"],"related_changes":[],"relations":[],"section":"psql","section_path":["psql"],"source_commits":["645cb44c5"],"source_entry_id":"19.0/changes/125","source_hash":"beb0dcc1ce9fa6386f0bf0df30b2f8131d5dba42d4f4128c2cd6acbd8c982fdd","source_url":"/docs/release/19.0/#RELEASE-19-PSQL","statement_hash":"848c2fa3fe2a386fd07c132b593ddb08856e7b2aaa15179ba62118576afbbbcc","text":"允许在psql中控制 boolean 值的显示方式（David G. Johnston）§ \\pset 变量为 display_true 和 display_false。","title":"允许在psql中控制 boolean 值的显示方式","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["6b1c4d326"],"commit_groups":[["6b1c4d326"]],"commits":["6b1c4d326"],"cves":[],"db_id":"dc88adffd4fb147f372dbb854b8ef946","html":"\u003cp\u003e新增\u003ca href=\"/docs/19/app-psql.html\" title=\"psql\"\u003e\u003cspan\u003epsql\u003c/span\u003e\u003c/a\u003e变量 \u003ca href=\"/docs/19/app-psql.html#APP-PSQL-VARIABLES-SERVICEFILE\"\u003e\u003ccode\u003eSERVICEFILE\u003c/code\u003e\u003c/a\u003e，用于引用服务文件位置（Ryo Kanbayashi）\u003ca href=\"https://postgr.es/c/6b1c4d326\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-b591570d95f66bcf","identity_text":"Add psql variable SERVICEFILE to reference the service file location (Ryo Kanbayashi)","part":"changes","patch_ids":["f34b2c4e36e82aaed089f9240a655205"],"related_changes":[],"relations":[],"section":"psql","section_path":["psql"],"source_commits":["6b1c4d326"],"source_entry_id":"19.0/changes/126","source_hash":"8759fefabd3a164e20abe195820b4c061ac5623fd471958e640ba0662f894fd0","source_url":"/docs/release/19.0/#RELEASE-19-PSQL","statement_hash":"b09c8b54ff77de8077e6cbdac02298264ce621d60531bf5d7cc279d44e5bdb63","text":"新增psql变量 SERVICEFILE，用于引用服务文件位置（Ryo Kanbayashi）§","title":"新增psql变量 SERVICEFILE，用于引用服务文件位置","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["27da1a796"],"commit_groups":[["27da1a796"]],"commits":["27da1a796"],"cves":[],"db_id":"43e3e5f1ede31bcf04563b5afcfc3a00","html":"\u003cp\u003e允许\u003ca href=\"/docs/19/app-psql.html\" title=\"psql\"\u003e\u003cspan\u003epsql\u003c/span\u003e\u003c/a\u003e更准确地判断是否需要 \u003ca href=\"/docs/19/app-psql.html#APP-PSQL-META-COMMAND-PSET-PAGER\"\u003epager\u003c/a\u003e（Erik Wienhold）\u003ca href=\"https://postgr.es/c/27da1a796\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-c9aa3d8c8674408e","identity_text":"Allow psql to more accurately determine if the pager is needed (Erik Wienhold)","part":"changes","patch_ids":["d124a0f76abfa8b4a074a31702b32a98"],"related_changes":[],"relations":[],"section":"psql","section_path":["psql"],"source_commits":["27da1a796"],"source_entry_id":"19.0/changes/127","source_hash":"6113bc7d5ac6ce6ca3017852451a83f7de3864887d5c08b7bf602891fe727aff","source_url":"/docs/release/19.0/#RELEASE-19-PSQL","statement_hash":"a13e94bf03e181e5e1b6f290cacb01a36ec07870dc5f606fcf6f13b4a604c26f","text":"允许psql更准确地判断是否需要 pager（Erik Wienhold）§","title":"允许psql更准确地判断是否需要 pager","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["02fd47dbf","0bf7d4ca9","14ee8e640","28c4b8a05","344b572e3","5fa7837d9","6d2ff1de4","81966c545","86c539c5a","a1f7f91be","a4c10de92","a604affad","c6a7d3bab","ff0bcb248"],"commit_groups":[["02fd47dbf"],["0bf7d4ca9"],["14ee8e640"],["28c4b8a05"],["344b572e3"],["5fa7837d9"],["6d2ff1de4"],["81966c545"],["86c539c5a"],["a1f7f91be"],["a4c10de92"],["a604affad"],["c6a7d3bab"],["ff0bcb248"]],"commits":["02fd47dbf","0bf7d4ca9","14ee8e640","28c4b8a05","344b572e3","5fa7837d9","6d2ff1de4","81966c545","86c539c5a","a1f7f91be","a4c10de92","a604affad","c6a7d3bab","ff0bcb248"],"cves":[],"db_id":"97b6d1cb2b1c6f790e1ee0cc68c428f3","html":"\u003cp\u003e新增或改进 \u003ca href=\"/docs/19/app-psql.html\" title=\"psql\"\u003e\u003cspan\u003epsql\u003c/span\u003e\u003c/a\u003e tab completion（Yamaguchi Atsuo，Yugo Nagata，Haruna Miwa，Xuneng Zhou，Dagfinn Ilmari Mannsåker，Fujii Masao，Álvaro Herrera，Jian He，Tatsuya Kawata，Ian Lawrence Barwick，Vasuki M）\u003ca href=\"https://postgr.es/c/5fa7837d9\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/c6a7d3bab\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/81966c545\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/a1f7f91be\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/6d2ff1de4\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/02fd47dbf\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/14ee8e640\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/ff0bcb248\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/86c539c5a\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/a604affad\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/a4c10de92\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/28c4b8a05\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/0bf7d4ca9\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/344b572e3\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-cc1e794ef5a081a8","identity_text":"Add or improve psql tab completion (Yamaguchi Atsuo, Yugo Nagata, Haruna Miwa, Xuneng Zhou, Dagfinn Ilmari Mannsåker, Fujii Masao, Álvaro Herrera, Jian He, Tatsuya Kawata, Ian Lawrence Barwick, Vasuki M)","part":"changes","patch_ids":["0bc376509890d77647e587ceff1a09ea","17bff6ec871538f49e658de435f132b7","20909bee90f1612ca703976d25da4fe7","5d94de103f4f8fbf41a27b4cf4c56f09","5f74e7e5145fefdaedfb976ffce67bea","83ce67d04ac574e86d5bea046edd389e","aa13c523c0813d34b174efdf29f499ba","b77a4036f7f23cf20f825245c8da3348","d46cb2f27b79e74e5030f415873eafca","d730e4d79557c79705494268a9a195de","d780ef56bcb3d7ffef09b3cd3188438c","dd8cde8962ab3420bca932e3d29ff31e","dfa561fff55c8cf24ddb85664a222972","fc29e1c27292cc71b84d0ad33579447a"],"related_changes":[],"relations":[],"section":"psql","section_path":["psql"],"source_commits":["02fd47dbf","0bf7d4ca9","14ee8e640","28c4b8a05","344b572e3","5fa7837d9","6d2ff1de4","81966c545","86c539c5a","a1f7f91be","a4c10de92","a604affad","c6a7d3bab","ff0bcb248"],"source_entry_id":"19.0/changes/128","source_hash":"495b95f24035b18e959b7118e2b2bccc2eac97e31f678879bc2b7bd96b5a84b7","source_url":"/docs/release/19.0/#RELEASE-19-PSQL","statement_hash":"475b3b6334690493954256eb56aa5edf61bc1bf14ac662ca4097554f0d2af294","text":"新增或改进 psql tab completion（Yamaguchi Atsuo，Yugo Nagata，Haruna Miwa，Xuneng Zhou，Dagfinn Ilmari Mannsåker，Fujii Masao，Álvaro Herrera，Jian He，Tatsuya Kawata，Ian Lawrence Barwick，Vasuki M）§§§§§§§§§§§§§§","title":"新增或改进 psql tab completion","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["c32fb29e9"],"commit_groups":[["c32fb29e9"]],"commits":["c32fb29e9"],"cves":[],"db_id":"78d7e5131c9e75e325718e7303eaa2ea","html":"\u003cp\u003e允许\u003ca href=\"/docs/19/app-pgdump.html\" title=\"pg_dump\"\u003e\u003cspan\u003epg_dump\u003c/span\u003e\u003c/a\u003e包含可恢复的扩展统计信息（Corey Huinker）\u003ca href=\"https://postgr.es/c/c32fb29e9\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-271300414b015f9c","identity_text":"Allow pg_dump to include restorable extended statistics (Corey Huinker)","part":"changes","patch_ids":["0b859504d22f7cc1b13d7fa79360cc6a"],"related_changes":[],"relations":[],"section":"服务器应用程序","section_path":["服务器应用程序"],"source_commits":["c32fb29e9"],"source_entry_id":"19.0/changes/129","source_hash":"6ca6a86204b38f89701c818931a87384b23bb50800f7e3a4dbbde81fa20ea8d1","source_url":"/docs/release/19.0/#RELEASE-19-SERVER-APPS","statement_hash":"f3f31769f227a28a98d92dafef24df40353e3f436ee4ffc6e62a6288b14a61e4","text":"允许pg_dump包含可恢复的扩展统计信息（Corey Huinker）§","title":"允许pg_dump包含可恢复的扩展统计信息","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["6429e5b77","95b6ec52e"],"commit_groups":[["6429e5b77"],["95b6ec52e"]],"commits":["6429e5b77","95b6ec52e"],"cves":[],"db_id":"75d75ff616801d25916149b8c1a0fc78","html":"\u003cp\u003e修改\u003ca href=\"/docs/19/app-vacuumdb.html\" title=\"vacuumdb\"\u003e\u003cspan\u003evacuumdb\u003c/span\u003e\u003c/a\u003e的 \u003ccode\u003e--analyze-only\u003c/code\u003e 和 \u003ccode\u003e--analyze-in-stages\u003c/code\u003e 选项，使其在未指定目标时也分析分区表（Laurenz Albe，Mircea Cadariu，Chao Li）\u003ca href=\"https://postgr.es/c/6429e5b77\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/95b6ec52e\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此前它会跳过分区表。现在其行为与 \u003ca href=\"/docs/19/sql-analyze.html\" title=\"ANALYZE\"\u003e\u003ccode\u003eANALYZE\u003c/code\u003e\u003c/a\u003e 一致。\u003c/p\u003e","id":"19.0-eff7a6e278961031","identity_text":"Change vacuumdb's --analyze-only and --analyze-in-stages options to analyze partitioned tables when no targets are specified (Laurenz Albe, Mircea Cadariu, Chao Li) Previously it skipped partitioned tables. This now matches the behavior of ANALYZE.","part":"changes","patch_ids":["206a5afd9378226013b2588fa2e94d9a","46eb2ddf37532fd1958b94f506a70e82"],"related_changes":[],"relations":[],"section":"服务器应用程序","section_path":["服务器应用程序"],"source_commits":["6429e5b77","95b6ec52e"],"source_entry_id":"19.0/changes/130","source_hash":"8a9c99d236906094b60b9c71b824e85f2b9ec8b6d1a5497ff9669c1638f49af8","source_url":"/docs/release/19.0/#RELEASE-19-SERVER-APPS","statement_hash":"f312d0618d845148fcffe6013a8511fb2fcfb024c7a45bac899a77a3e067de8c","text":"修改vacuumdb的 --analyze-only 和 --analyze-in-stages 选项，使其在未指定目标时也分析分区表（Laurenz Albe，Mircea Cadariu，Chao Li）§ § 此前它会跳过分区表。现在其行为与 ANALYZE 一致。","title":"修改vacuumdb的 --analyze-only 和 --analyze-in-stages 选项，使其在未指定目标时也分析分区表","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["d107176d2"],"commit_groups":[["d107176d2"]],"commits":["d107176d2"],"cves":[],"db_id":"9cd3c254264231befe4336fd58aaedce","html":"\u003cp\u003e允许\u003ca href=\"/docs/19/app-vacuumdb.html\" title=\"vacuumdb\"\u003e\u003cspan\u003evacuumdb\u003c/span\u003e\u003c/a\u003e使用 \u003ccode\u003e--dry-run\u003c/code\u003e 选项报告将要执行的命令而不实际运行（Corey Huinker）\u003ca href=\"https://postgr.es/c/d107176d2\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-639bf09de2c1d14f","identity_text":"Allow vacuumdb to report its commands without running them using option --dry-run (Corey Huinker)","part":"changes","patch_ids":["ed5a0bc25a94a928543ceaa0c1372881"],"related_changes":[],"relations":[],"section":"服务器应用程序","section_path":["服务器应用程序"],"source_commits":["d107176d2"],"source_entry_id":"19.0/changes/131","source_hash":"51247e37eaed27858507257407d7d68386869e9e93dbe596c0816437631bfe6d","source_url":"/docs/release/19.0/#RELEASE-19-SERVER-APPS","statement_hash":"08f47efe32b5299c72e7c64a41a3147848e2c97fc119f83b7fc4b2a373087d9b","text":"允许vacuumdb使用 --dry-run 选项报告将要执行的命令而不实际运行（Corey Huinker）§","title":"允许vacuumdb使用 --dry-run 选项报告将要执行的命令而不实际运行","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["b3cf461b3"],"commit_groups":[["b3cf461b3"]],"commits":["b3cf461b3"],"cves":[],"db_id":"cf41cf8ce513c39a42f3f8b5393fdc5a","html":"\u003cp\u003e允许\u003ca href=\"/docs/19/app-pgverifybackup.html\" title=\"pg_verifybackup\"\u003e\u003cspan\u003epg_verifybackup\u003c/span\u003e\u003c/a\u003e读取 \u003cacronym\u003eWAL\u003c/acronym\u003e 文件，这些文件存储在 \u003cspan\u003etar\u003c/span\u003e 归档中（Amul Sul）\u003ca href=\"https://postgr.es/c/b3cf461b3\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e新增 \u003ccode\u003e--wal-path\u003c/code\u003e 选项，作为现有且已弃用的 \u003ccode\u003e--wal-directory\u003c/code\u003e 选项的别名。\u003c/p\u003e","id":"19.0-e7049fa3bfe5ad39","identity_text":"Allow pg_verifybackup to read WAL files stored in tar archives (Amul Sul) Add option --wal-path as an alias for the existing and deprecated --wal-directory option.","part":"changes","patch_ids":["95ace84ab191d73f122583aaf81e4a39"],"related_changes":[],"relations":[],"section":"服务器应用程序","section_path":["服务器应用程序"],"source_commits":["b3cf461b3"],"source_entry_id":"19.0/changes/132","source_hash":"152a0eb4b71851087fd91182811f32f9ceb770cc929890a745da5fcf8e421cea","source_url":"/docs/release/19.0/#RELEASE-19-SERVER-APPS","statement_hash":"65532310468cbba220d1c146fbd7ca9eda74c500bce9229ba305dcf90366a61c","text":"允许pg_verifybackup读取 WAL 文件，这些文件存储在 tar 归档中（Amul Sul）§ 新增 --wal-path 选项，作为现有且已弃用的 --wal-directory 选项的别名。","title":"允许pg_verifybackup读取 WAL 文件，这些文件存储在 tar 归档中","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["b15c15139"],"commit_groups":[["b15c15139"]],"commits":["b15c15139"],"cves":[],"db_id":"26b120f585dba2fb962357e8d46071d0","html":"\u003cp\u003e允许\u003ca href=\"/docs/19/pgwaldump.html\" title=\"pg_waldump\"\u003e\u003cspan\u003epg_waldump\u003c/span\u003e\u003c/a\u003e读取 \u003cacronym\u003eWAL\u003c/acronym\u003e 文件，这些文件存储在 \u003cspan\u003etar\u003c/span\u003e 归档中（Amul Sul）\u003ca href=\"https://postgr.es/c/b15c15139\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-a4b0a0ed2c4f28e0","identity_text":"Allow pg_waldump to read WAL files stored in tar archives (Amul Sul)","part":"changes","patch_ids":["92f9b79fdf9fb78ee70b0f2530d7a299"],"related_changes":[],"relations":[],"section":"服务器应用程序","section_path":["服务器应用程序"],"source_commits":["b15c15139"],"source_entry_id":"19.0/changes/133","source_hash":"b8cf5baef678a4e3da97aa8de3e112c0551aebbf2682769c06bdc73145af80db","source_url":"/docs/release/19.0/#RELEASE-19-SERVER-APPS","statement_hash":"01980c4fea242c3b9a2657c22f50ad9f2d747e98d8906b05f5f3afe7a3695dcf","text":"允许pg_waldump读取 WAL 文件，这些文件存储在 tar 归档中（Amul Sul）§","title":"允许pg_waldump读取 WAL 文件，这些文件存储在 tar 归档中","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["158408fef","161a3e8b6","3bcfcd815","b33f75361"],"commit_groups":[["158408fef"],["161a3e8b6"],["3bcfcd815"],["b33f75361"]],"commits":["158408fef","161a3e8b6","3bcfcd815","b33f75361"],"cves":[],"db_id":"517bfb3f77fd3acc072ccfba83e23dc6","html":"\u003cp\u003e改进\u003ca href=\"/docs/19/pgupgrade.html\" title=\"pg_upgrade\"\u003e\u003cspan\u003epg_upgrade\u003c/span\u003e\u003c/a\u003e复制大对象元数据的性能（Nathan Bossart）\u003ca href=\"https://postgr.es/c/3bcfcd815\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/158408fef\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/161a3e8b6\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/b33f75361\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e根据旧集簇的 \u003cspan\u003ePostgreSQL\u003c/span\u003e 版本采用不同的方法。\u003c/p\u003e","id":"19.0-da142b49c8435f89","identity_text":"Improve performance of pg_upgrade copying large object metadata (Nathan Bossart) Various methods are used, depending on the PostgreSQL version of the old cluster.","part":"changes","patch_ids":["12303ac15e78d39ab08e08ef243d950f","6b265e25bb8e570015fb349cb57ed5a2","af863f0d10fe9b397f2bad7e617549a6","b59ae2604f73a158d4be254f1a275c5a"],"related_changes":[],"relations":[],"section":"服务器应用程序","section_path":["服务器应用程序"],"source_commits":["158408fef","161a3e8b6","3bcfcd815","b33f75361"],"source_entry_id":"19.0/changes/134","source_hash":"af8eba51ecfd578bf49b397150547b6ceef9cc6f218b52642cecc6913fe6b668","source_url":"/docs/release/19.0/#RELEASE-19-SERVER-APPS","statement_hash":"06a2c858c3b814a3156920f43ab30f49a697eb76b8ddbc130b7c2979bd289b17","text":"改进pg_upgrade复制大对象元数据的性能（Nathan Bossart）§ § § § 根据旧集簇的 PostgreSQL 版本采用不同的方法。","title":"改进pg_upgrade复制大对象元数据的性能","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["412036c22"],"commit_groups":[["412036c22"]],"commits":["412036c22"],"cves":[],"db_id":"94dc0d22eae08afaf59f319b80e0628c","html":"\u003cp\u003e允许\u003ca href=\"/docs/19/pgupgrade.html\" title=\"pg_upgrade\"\u003e\u003cspan\u003epg_upgrade\u003c/span\u003e\u003c/a\u003e处理存放在 \u003ccode\u003ePGDATA\u003c/code\u003e 目录中的非默认表空间（Nathan Bossart）\u003ca href=\"https://postgr.es/c/412036c22\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此前这类表空间会报错。\u003c/p\u003e","id":"19.0-5998f40c7ea66a08","identity_text":"Allow pg_upgrade to process non-default tablespaces stored in the PGDATA directory (Nathan Bossart) Previously such tablespaces generated an error.","part":"changes","patch_ids":["1415dad8d3e913c3a3c2d8b913236a6f"],"related_changes":[],"relations":[],"section":"服务器应用程序","section_path":["服务器应用程序"],"source_commits":["412036c22"],"source_entry_id":"19.0/changes/135","source_hash":"592ff08a676cac43e7edd0ada529d5be76b35911fd8b8fb0c85ca8d3182e1149","source_url":"/docs/release/19.0/#RELEASE-19-SERVER-APPS","statement_hash":"14415cbc76aeb007ed68c6488af8453f7d87555212a2eda42239a43446936837","text":"允许pg_upgrade处理存放在 PGDATA 目录中的非默认表空间（Nathan Bossart）§ 此前这类表空间会报错。","title":"允许pg_upgrade处理存放在 PGDATA 目录中的非默认表空间","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["0ab208fa5"],"commit_groups":[["0ab208fa5"]],"commits":["0ab208fa5"],"cves":[],"db_id":"e6ca5ac89580353d35ab9cbf10afc29f","html":"\u003cp\u003e新增\u003ca href=\"/docs/19/pgbench.html\" title=\"pgbench\"\u003e\u003cspan\u003epgbench\u003c/span\u003e\u003c/a\u003e选项 \u003ccode\u003e--continue-on-error\u003c/code\u003e，以在 \u003cacronym\u003eSQL\u003c/acronym\u003e 错误后继续执行（Rintaro Ikeda，Yugo Nagata，Fujii Masao）\u003ca href=\"https://postgr.es/c/0ab208fa5\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-610e0e3d00fc883f","identity_text":"Add pgbench option --continue-on-error to continue after SQL errors (Rintaro Ikeda, Yugo Nagata, Fujii Masao)","part":"changes","patch_ids":["1804cc177d858e5d988c5b73969fd888"],"related_changes":[],"relations":[],"section":"服务器应用程序","section_path":["服务器应用程序"],"source_commits":["0ab208fa5"],"source_entry_id":"19.0/changes/136","source_hash":"bce8cd35f7c235059034552c785a9bd38587ab1cf00ae94a211bcda100459c10","source_url":"/docs/release/19.0/#RELEASE-19-SERVER-APPS","statement_hash":"0ff23dd6c689d67915d281c3b62b24ab71ac7926fb8b845452530892169a1c87","text":"新增pgbench选项 --continue-on-error，以在 SQL 错误后继续执行（Rintaro Ikeda，Yugo Nagata，Fujii Masao）§","title":"新增pgbench选项 --continue-on-error，以在 SQL 错误后继续执行","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["0b096e379","9dcc76414"],"commit_groups":[["0b096e379"],["9dcc76414"]],"commits":["0b096e379","9dcc76414"],"cves":[],"db_id":"57f9d08feb979257d3e57027ab281685","html":"\u003cp\u003e改进\u003ca href=\"/docs/19/pgtesttiming.html\" title=\"pg_test_timing\"\u003e\u003cspan\u003epg_test_timing\u003c/span\u003e\u003c/a\u003e的可用性（Hannu Krosing，Tom Lane）\u003ca href=\"https://postgr.es/c/0b096e379\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/9dcc76414\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e现在报告纳秒而不是微秒；除直方图输出外，还会输出第二张精确计时表，并可通过 \u003ccode\u003e--cutoff\u003c/code\u003e 指定可选截断。\u003c/p\u003e","id":"19.0-469feae3fd6ffa0c","identity_text":"Improve the usability of pg_test_timing (Hannu Krosing, Tom Lane) Report nanoseconds instead of microseconds. In addition to histogram output, output a second table that reports exact timings, with an optional cutoff set by --cutoff.","part":"changes","patch_ids":["9ca940a92cce25756a9ac202704e02f9","d8d660705cee2d07cb4d15eca1d78f03"],"related_changes":[],"relations":[],"section":"服务器应用程序","section_path":["服务器应用程序"],"source_commits":["0b096e379","9dcc76414"],"source_entry_id":"19.0/changes/137","source_hash":"50f6e632466fd5ec32628c8af04deeb92b815c84ea9f450dbce38014f93196e0","source_url":"/docs/release/19.0/#RELEASE-19-SERVER-APPS","statement_hash":"29d32531cc204fe26d21ef78195d6c690edce909cea86e2375e05852cd3a240b","text":"改进pg_test_timing的可用性（Hannu Krosing，Tom Lane）§§ 现在报告纳秒而不是微秒；除直方图输出外，还会输出第二张精确计时表，并可通过 --cutoff 指定可选截断。","title":"改进pg_test_timing的可用性","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["85ddcc2f4"],"commit_groups":[["85ddcc2f4"]],"commits":["85ddcc2f4"],"cves":[],"db_id":"fe876660872e5113d1a8dfb5ab611340","html":"\u003cp\u003e允许\u003ca href=\"/docs/19/app-pgcreatesubscriber.html\" title=\"pg_createsubscriber\"\u003e\u003cspan\u003epg_createsubscriber\u003c/span\u003e\u003c/a\u003e忽略已存在的指定发布（Shubham Khanna）\u003ca href=\"https://postgr.es/c/85ddcc2f4\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此前这会报错。\u003c/p\u003e","id":"19.0-806e3e9b5e2d4521","identity_text":"Allow pg_createsubscriber to ignore specified publications that already exist (Shubham Khanna) Previously this generated an error.","part":"changes","patch_ids":["0b2cf2db89fc3d41057099f6d3df1807"],"related_changes":[],"relations":[],"section":"服务器应用程序 / pg_createsubscriber","section_path":["服务器应用程序","pg_createsubscriber"],"source_commits":["85ddcc2f4"],"source_entry_id":"19.0/changes/138","source_hash":"5c6984ff3a33e0bcf90232fd3ec4d124c2edc47adc816db34e2cd22cb8f47d6b","source_url":"/docs/release/19.0/#RELEASE-19-PG-CREATESUBSCRIBER","statement_hash":"b3e8a144306f7c0989bbb4fe466e25d2600f15677c63a4ccb3f2ec43a0224d69","text":"允许pg_createsubscriber忽略已存在的指定发布（Shubham Khanna）§ 此前这会报错。","title":"允许pg_createsubscriber忽略已存在的指定发布","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["639352d90"],"commit_groups":[["639352d90"]],"commits":["639352d90"],"cves":[],"db_id":"98b1b4351ee153f8cd3e73f82c1e532b","html":"\u003cp\u003e更改\u003ca href=\"/docs/19/app-pgcreatesubscriber.html\" title=\"pg_createsubscriber\"\u003e\u003cspan\u003epg_createsubscriber\u003c/span\u003e\u003c/a\u003e存储恢复参数的方式（Alyona Vinter）\u003ca href=\"https://postgr.es/c/639352d90\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e变更会存放在可选包含的 \u003ccode\u003epg_createsubscriber.conf\u003c/code\u003e 中，而不是直接写入 \u003ccode\u003epostgresql.auto.conf\u003c/code\u003e。\u003c/p\u003e","id":"19.0-13c9336e77f751b7","identity_text":"Change the way pg_createsubscriber stores recovery parameters (Alyona Vinter) Changes are stored in optionally-included pg_createsubscriber.conf rather than directly in postgresql.auto.conf.","part":"changes","patch_ids":["919a6bd119819b55650be21ac7457dbc"],"related_changes":[],"relations":[],"section":"服务器应用程序 / pg_createsubscriber","section_path":["服务器应用程序","pg_createsubscriber"],"source_commits":["639352d90"],"source_entry_id":"19.0/changes/139","source_hash":"7f142e9c8dd2763369d270479690d9054bcaf935b3e01d260d5855f03523cee3","source_url":"/docs/release/19.0/#RELEASE-19-PG-CREATESUBSCRIBER","statement_hash":"ac095afa080c3ef38d5c69c923919ec20501864dad35264027ba8c391b392dfd","text":"更改pg_createsubscriber存储恢复参数的方式（Alyona Vinter）§ 变更会存放在可选包含的 pg_createsubscriber.conf 中，而不是直接写入 postgresql.auto.conf。","title":"更改pg_createsubscriber存储恢复参数的方式","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["6b5b7eae3"],"commit_groups":[["6b5b7eae3"]],"commits":["6b5b7eae3"],"cves":[],"db_id":"d4045a5406f20edd80f4afb36641ff8d","html":"\u003cp\u003e新增\u003ca href=\"/docs/19/app-pgcreatesubscriber.html\" title=\"pg_createsubscriber\"\u003e\u003cspan\u003epg_createsubscriber\u003c/span\u003e\u003c/a\u003e选项 \u003ccode\u003e-l\u003c/code\u003e/\u003ccode\u003e--logdir\u003c/code\u003e，用于把输出重定向到文件（Gyan Sreejith，Hayato Kuroda）\u003ca href=\"https://postgr.es/c/6b5b7eae3\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-e5d4674a36af1f85","identity_text":"Add pg_createsubscriber option -l/--logdir to redirect output to files (Gyan Sreejith, Hayato Kuroda)","part":"changes","patch_ids":["5ca4f034f954037d65826fbb18f304c7"],"related_changes":[],"relations":[],"section":"服务器应用程序 / pg_createsubscriber","section_path":["服务器应用程序","pg_createsubscriber"],"source_commits":["6b5b7eae3"],"source_entry_id":"19.0/changes/140","source_hash":"2415d1a4ae6995446a344fbc1f937c15cb89e3aefbd4a6d2bb9fcca7f17bf7d6","source_url":"/docs/release/19.0/#RELEASE-19-PG-CREATESUBSCRIBER","statement_hash":"8bcfb97ab19aabb6e16e2c01ca080c96600c1f793f48c7ee4053b21ea39c66ea","text":"新增pg_createsubscriber选项 -l/--logdir，用于把输出重定向到文件（Gyan Sreejith，Hayato Kuroda）§","title":"新增pg_createsubscriber选项 -l/--logdir，用于把输出重定向到文件","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["4a1b05caa","ecae09725"],"commit_groups":[["4a1b05caa"],["ecae09725"]],"commits":["4a1b05caa","ecae09725"],"cves":[],"db_id":"6a27ddc3375c6984764ecda039ece59e","html":"\u003cp\u003e恢复对 \u003ca href=\"/docs/19/installation-platform-notes.html#INSTALLATION-NOTES-AIX\" title=\"17.7.1. AIX\"\u003e\u003cspan\u003eAIX\u003c/span\u003e\u003c/a\u003e 的支持（Aditya Kamath，Srirama Kucherlapati，Peter Eisentraut）\u003ca href=\"https://postgr.es/c/ecae09725\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/4a1b05caa\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这使用 \u003cspan\u003egcc\u003c/span\u003e，并且只支持 64 位构建。\u003c/p\u003e","id":"19.0-f053d1114562a1f8","identity_text":"Restore support for AIX (Aditya Kamath, Srirama Kucherlapati, Peter Eisentraut) This uses gcc and only supports 64-bit builds.","part":"changes","patch_ids":["5857f41edf90defcc01e2ef6ba8c8efd","61ed97ddf02ca838435046082ca86c9b"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["4a1b05caa","ecae09725"],"source_entry_id":"19.0/changes/141","source_hash":"b4463b153233af21d597be4fcbdf031464bda673e5fabf9518a42aa5837ffc2e","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"687cd0fe635007846610174a75a0244c0e48839ae17a04ccd4342e88c0d06288","text":"恢复对 AIX 的支持（Aditya Kamath，Srirama Kucherlapati，Peter Eisentraut）§§ 这使用 gcc，并且只支持 64 位构建。","title":"恢复对 AIX 的支持","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["0123ce131"],"commit_groups":[["0123ce131"]],"commits":["0123ce131"],"cves":[],"db_id":"5822454812a22c91153896d1170e12b8","html":"\u003cp\u003e将 \u003ca href=\"/docs/19/installation-platform-notes.html#INSTALLATION-NOTES-SOLARIS\" title=\"17.7.5. Solaris\"\u003e\u003cspan\u003eSolaris\u003c/span\u003e\u003c/a\u003e 改为使用未命名 \u003cacronym\u003ePOSIX\u003c/acronym\u003e 信号量（Tom Lane）\u003ca href=\"https://postgr.es/c/0123ce131\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此前使用的是 System V 信号量。\u003c/p\u003e","id":"19.0-747704b015e210c4","identity_text":"Change Solaris to use unnamed POSIX semaphores (Tom Lane) Previously it used System V semaphores.","part":"changes","patch_ids":["4f43e5ecb6f23020d60c39e4d56501b1"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["0123ce131"],"source_entry_id":"19.0/changes/142","source_hash":"a1499b8a31c8a0cb25779d41b98189b0dd698dc9789a22791e3631ad3c609c53","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"8ec02317c271b59321e7294211e8e413e0fbc1ca6fbcc353ef9c10882bab95b0","text":"将 Solaris 改为使用未命名 POSIX 信号量（Tom Lane）§ 此前使用的是 System V 信号量。","title":"将 Solaris 改为使用未命名 POSIX 信号量","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["8fd9bb1d9"],"commit_groups":[["8fd9bb1d9"]],"commits":["8fd9bb1d9"],"cves":[],"db_id":"20208bf5986fd46d9b096ac8514bcd77","html":"\u003cp\u003e要求\u003ca href=\"/docs/19/installation-platform-notes.html#INSTALLATION-NOTES-VISUAL-STUDIO\" title=\"17.7.6. Visual Studio\"\u003e\u003cspan\u003eVisual Studio 2019\u003c/span\u003e\u003c/a\u003e或更高版本（Peter Eisentraut）\u003ca href=\"https://postgr.es/c/8fd9bb1d9\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-39c8ec6b59814e0a","identity_text":"Require Visual Studio 2019 or later (Peter Eisentraut)","part":"changes","patch_ids":["eb1cb77c1a3dbaf28e4e4263775742ca"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["8fd9bb1d9"],"source_entry_id":"19.0/changes/143","source_hash":"80c6a27889376fa7d9612c49327c9b27c38b186229a506936e0e6484010065af","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"54ed3353b823c253bb3788b37f3f5ab829631679cb77a1f673a26095d5dec794","text":"要求Visual Studio 2019或更高版本（Peter Eisentraut）§","title":"要求Visual Studio 2019或更高版本","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["2bc60f862"],"commit_groups":[["2bc60f862"]],"commits":["2bc60f862"],"cves":[],"db_id":"3132aa5d06c1125f55b01f534f78d766","html":"\u003cp\u003e允许 \u003ca href=\"/docs/19/installation-platform-notes.html#INSTALLATION-NOTES-VISUAL-STUDIO\" title=\"17.7.6. Visual Studio\"\u003e\u003cspan\u003eMSVC\u003c/span\u003e\u003c/a\u003e 为\u003ca href=\"/docs/19/plpython.html\" title=\"第 44 章 PL/Python — Python 过程语言\"\u003e\u003cspan\u003ePL/Python\u003c/span\u003e\u003c/a\u003e使用 Python Limited \u003cacronym\u003eAPI\u003c/acronym\u003e 进行构建（Bryan Green）\u003ca href=\"https://postgr.es/c/2bc60f862\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-45d8732072d44367","identity_text":"Allow MSVC to create PL/Python using the Python Limited API (Bryan Green)","part":"changes","patch_ids":["418873dc1d7268f95f33dfe2b5e16c14"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["2bc60f862"],"source_entry_id":"19.0/changes/144","source_hash":"9581b6a75f4b8620021738658ae9e910ab302a30da4752f4d5979f97b3f6a0d8","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"b508d54b21604e4809a76017556486869554e4ef75e07613acbe6a703bccfb31","text":"允许 MSVC 为PL/Python使用 Python Limited API 进行构建（Bryan Green）§","title":"允许 MSVC 为PL/Python使用 Python Limited API 进行构建","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["a516b3f00"],"commit_groups":[["a516b3f00"]],"commits":["a516b3f00"],"cves":[],"db_id":"d6325602478b636db3a5ec268cd93ecf","html":"\u003cp\u003e允许使用 \u003ca href=\"/docs/19/installation-platform-notes.html#INSTALLATION-NOTES-VISUAL-STUDIO\" title=\"17.7.6. Visual Studio\"\u003e\u003cspan\u003eMSVC\u003c/span\u003e\u003c/a\u003e 在 AArch64 上构建（Niyas Sait，Greg Burd，Dave Cramer）\u003ca href=\"https://postgr.es/c/a516b3f00\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-61437fd146ca2209","identity_text":"Allow building on AArch64 using MSVC (Niyas Sait, Greg Burd, Dave Cramer)","part":"changes","patch_ids":["16ee331f37ac78c9c891aded3cf696b3"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["a516b3f00"],"source_entry_id":"19.0/changes/145","source_hash":"7485a82739a3d7f1133741c93e4926cb77848818b0431ab80fba090c5ece6e6d","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"84047fa4d176146789f90f020396ed92c7727957e6ee704f3892da75d5c1c59b","text":"允许使用 MSVC 在 AArch64 上构建（Niyas Sait，Greg Burd，Dave Cramer）§","title":"允许使用 MSVC 在 AArch64 上构建","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["65707ed9a"],"commit_groups":[["65707ed9a"]],"commits":["65707ed9a"],"cves":[],"db_id":"0c0390b852377967e700ba3b053f7379","html":"\u003cp\u003e允许在\u003ca href=\"/docs/19/installation-platform-notes.html#INSTALLATION-NOTES-VISUAL-STUDIO\" title=\"17.7.6. Visual Studio\"\u003e\u003cspan\u003eWindows\u003c/span\u003e\u003c/a\u003e上使用 \u003ccode\u003eDbgHelp\u003c/code\u003e 获取执行栈回溯（Bryan Green）\u003ca href=\"https://postgr.es/c/65707ed9a\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-ec053d412a519dad","identity_text":"Allow execution stack backtraces on Windows using DbgHelp (Bryan Green)","part":"changes","patch_ids":["cd42e05672f6bd56ee23272b977b4e8c"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["65707ed9a"],"source_entry_id":"19.0/changes/146","source_hash":"7a7b5d5a532fdf341e717a1946b247b8fa88a993d6e6071c7bbc64d1a3caf20a","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"e6a82e3253cab1a1edc5d38a14f776a82fae9f4fb6fce4babe619a78f776ba2d","text":"允许在Windows上使用 DbgHelp 获取执行栈回溯（Bryan Green）§","title":"允许在Windows上使用 DbgHelp 获取执行栈回溯","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["4fbe01514","f5e0186f8"],"commit_groups":[["4fbe01514"],["f5e0186f8"]],"commits":["4fbe01514","f5e0186f8"],"cves":[],"db_id":"6e3da601f5fd206642c361c0c5b14440","html":"\u003cp\u003e将支持的 C 语言版本改为 C11（Peter Eisentraut）\u003ca href=\"https://postgr.es/c/f5e0186f8\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/4fbe01514\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此前使用 C99。\u003c/p\u003e","id":"19.0-b866f3e833b981c0","identity_text":"Change the supported C language version to C11 (Peter Eisentraut) Previously C99 was used.","part":"changes","patch_ids":["59f1a29dc10249292062069111b7b597","67efc794132ce8bbd000864dd3ff37ab"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["4fbe01514","f5e0186f8"],"source_entry_id":"19.0/changes/147","source_hash":"6fa166bd21f29b3ae899571190b15cdf0d9d078a17d8a7109f463975d9e7e046","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"5192ce40a6b72f5a4ca925ca157226fb7f5355bd0720cb51674314bff694b09f","text":"将支持的 C 语言版本改为 C11（Peter Eisentraut）§§ 此前使用 C99。","title":"将支持的 C 语言版本改为 C11","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["76f4b92ba"],"commit_groups":[["76f4b92ba"]],"commits":["76f4b92ba"],"cves":[],"db_id":"7f1a5c713dab5ac5bef306ef70947742","html":"\u003cp\u003e在可用时使用标准 C23 和 C++ 属性（Peter Eisentraut）\u003ca href=\"https://postgr.es/c/76f4b92ba\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-0f89d48c7a608f23","identity_text":"Use standard C23 and C++ attributes if available (Peter Eisentraut)","part":"changes","patch_ids":["7bad991024e595556f1c8e8c424a20ff"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["76f4b92ba"],"source_entry_id":"19.0/changes/148","source_hash":"ba7a0225fc24aaecc9d6025a8c2ff34ce8c7b4284edfe41be8d97af6fd110343","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"1db1f95cb0bcf81dee57272ecc92a9719ae985b38083d8e3b8663020c192497c","text":"在可用时使用标准 C23 和 C++ 属性（Peter Eisentraut）§","title":"在可用时使用标准 C23 和 C++ 属性","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["5e13b0f24"],"commit_groups":[["5e13b0f24"]],"commits":["5e13b0f24"],"cves":[],"db_id":"b0e9a5bbb0226b3e4353c8b3a392d7c3","html":"\u003cp\u003e使用 \u003cacronym\u003eAVX2\u003c/acronym\u003e \u003cacronym\u003eCPU\u003c/acronym\u003e 指令计算\u003ca href=\"/docs/19/checksums.html\" title=\"28.2. 数据校验和\"\u003e页面校验和\u003c/a\u003e（Matthew Sterrett，Andrew Kim）\u003ca href=\"https://postgr.es/c/5e13b0f24\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-4eb8d3a3aaab2e33","identity_text":"Use AVX2 CPU instructions for calculating page checksums (Matthew Sterrett, Andrew Kim)","part":"changes","patch_ids":["60413bcbd7997e1f98531f60a705a9f8"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["5e13b0f24"],"source_entry_id":"19.0/changes/149","source_hash":"841ead82af2b0d1e0f6e90fa65c905a6e0fb89a7b72285db017907f9a4ad24e8","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"a02f1fbc49765e52cbf6fc57492c6231557d3c5764c44f7b7c5735ae5bf22eac","text":"使用 AVX2 CPU 指令计算页面校验和（Matthew Sterrett，Andrew Kim）§","title":"使用 AVX2 CPU 指令计算页面校验和","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["fbc57f2bc"],"commit_groups":[["fbc57f2bc"]],"commits":["fbc57f2bc"],"cves":[],"db_id":"ca3e3ffc4338eb1fadd9ee018569e34c","html":"\u003cp\u003e使用 \u003cspan\u003eARM\u003c/span\u003e Crypto Extension 计算 CRC32C（John Naylor）\u003ca href=\"https://postgr.es/c/fbc57f2bc\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-fbf0e2fafd14eae2","identity_text":"Use ARM Crypto Extension to Compute CRC32C (John Naylor)","part":"changes","patch_ids":["1afa237ddb6466bb833bd77cf9ae7a9a"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["fbc57f2bc"],"source_entry_id":"19.0/changes/150","source_hash":"472ab2edd2029aa05418cf81ff56a97e72ab3da6bf9296568a818bae64d3ec2a","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"4a8a7db7955a4301dbb9b2422d4732e9921698e2bb2a2ca27ca53c3dafa09ea3","text":"使用 ARM Crypto Extension 计算 CRC32C（John Naylor）§","title":"使用 ARM Crypto Extension 计算 CRC32C","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["ec8719ccb"],"commit_groups":[["ec8719ccb"]],"commits":["ec8719ccb"],"cves":[],"db_id":"11741fba4debbe0ad890c12a499c172a","html":"\u003cp\u003e修改 \u003ca href=\"/docs/19/functions-binarystring.html\" title=\"9.5. 二进制串函数和操作符\"\u003e\u003ccode\u003ehex_encode()\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/functions-binarystring.html\" title=\"9.5. 二进制串函数和操作符\"\u003e\u003ccode\u003ehex_decode()\u003c/code\u003e\u003c/a\u003e，使其使用 \u003cacronym\u003eSIMD\u003c/acronym\u003e \u003cacronym\u003eCPU\u003c/acronym\u003e 指令（Nathan Bossart，Chiranmoy Bhattacharya）\u003ca href=\"https://postgr.es/c/ec8719ccb\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-65676daaa3b30d4e","identity_text":"Change hex_encode() and hex_decode() to use SIMD CPU instructions (Nathan Bossart, Chiranmoy Bhattacharya)","part":"changes","patch_ids":["fa41b618cf46f34c51f7d040a06ab150"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["ec8719ccb"],"source_entry_id":"19.0/changes/151","source_hash":"d95df37bd5729b9d10de352c44f0854166d46664d292061fa529cd67dd922ee2","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"4b12d43c199dd5993aef7e9871e98b37c6cad116d9729e1cadde4e1371f17e9c","text":"修改 hex_encode() 和 hex_decode()，使其使用 SIMD CPU 指令（Nathan Bossart，Chiranmoy Bhattacharya）§","title":"修改 hex_encode() 和 hex_decode()，使其使用 SIMD CPU 指令","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["f039c2244"],"commit_groups":[["f039c2244"]],"commits":["f039c2244"],"cves":[],"db_id":"dd79d2868c10a6351f8e573e735e76f5","html":"\u003cp\u003e要求\u003ca href=\"/docs/19/install-meson.html\" title=\"17.4. 使用 Meson 构建和安装\"\u003e\u003cspan\u003eMeson\u003c/span\u003e\u003c/a\u003e版本 0.57.2 或更高（Peter Eisentraut）\u003ca href=\"https://postgr.es/c/f039c2244\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-893b5c50f6ffbb00","identity_text":"Require Meson version 0.57.2 or later (Peter Eisentraut)","part":"changes","patch_ids":["ec6352d779ee4bca9abdf1d381ffcd25"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["f039c2244"],"source_entry_id":"19.0/changes/152","source_hash":"3cd9a49d741e0f67fe706a8766b89cfc20b09a4e02d0b837ab45fd98243392a0","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"090e6e109cb9a4eeb7cd4230829da972d7229ce411856f29f0e3d563ad71e20e","text":"要求Meson版本 0.57.2 或更高（Peter Eisentraut）§","title":"要求Meson版本 0.57.2 或更高","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["78727dcba"],"commit_groups":[["78727dcba"]],"commits":["78727dcba"],"cves":[],"db_id":"eb1383d7fd40f7f1c4dc0376067f3669","html":"\u003cp\u003e新增 \u003cspan\u003eMeson\u003c/span\u003e 选项，用于同时构建共享库和静态库，或仅构建共享库（Peter Eisentraut）\u003ca href=\"https://postgr.es/c/78727dcba\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-9262552f6299091a","identity_text":"Add Meson option to build both shared and static libraries, or only shared (Peter Eisentraut)","part":"changes","patch_ids":["e208dab0088868ff672bb9a88714796f"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["78727dcba"],"source_entry_id":"19.0/changes/153","source_hash":"46c3dea66afd3f6bdbe9c0f23cab3fc07f7c923b8a54cc68a1d0dec5d5a4b6ca","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"05e4f24b484569d138bb3df3ce06e17134b1f4f827ed5f5579b85a398b9b9a4b","text":"新增 Meson 选项，用于同时构建共享库和静态库，或仅构建共享库（Peter Eisentraut）§","title":"新增 Meson 选项，用于同时构建共享库和静态库，或仅构建共享库","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["57ee39795"],"commit_groups":[["57ee39795"]],"commits":["57ee39795"],"cves":[],"db_id":"d7e2c494563fe17c4ee00266fa53a520","html":"\u003cp\u003e更新 \u003ca href=\"/docs/19/collation.html#COLLATION-MANAGING-STANDARD\" title=\"23.2.2.1. 标准排序规则\"\u003eUnicode\u003c/a\u003e 数据到 17.0.0 版（Peter Eisentraut）\u003ca href=\"https://postgr.es/c/57ee39795\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-17a9319577a9ede2","identity_text":"Update Unicode data to version 17.0.0 (Peter Eisentraut)","part":"changes","patch_ids":["c59ccd505e5b66c373128a4ab143e4ce"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["57ee39795"],"source_entry_id":"19.0/changes/154","source_hash":"43664f1ed399ca43ebb2d6353c0ffd74946e74c4ce11f5c1fd3f1d2301438dbc","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"c94d52c3540a007227d0d2130851f8a92ba5cc5337ccb5c9d1d3728e6f706af6","text":"更新 Unicode 数据到 17.0.0 版（Peter Eisentraut）§","title":"更新 Unicode 数据到 17.0.0 版","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["4020b370f","94f3ad396"],"commit_groups":[["4020b370f"],["94f3ad396"]],"commits":["4020b370f","94f3ad396"],"cves":[],"db_id":"c400fe8cf5b79034bc335844fe53d2a2","html":"\u003cp\u003e新增钩子 \u003ccode\u003eplanner_setup_hook\u003c/code\u003e、\u003ccode\u003eplanner_shutdown_hook\u003c/code\u003e、\u003ccode\u003ejoinrel_setup_hook\u003c/code\u003e 和 \u003ccode\u003ejoin_path_setup_hook\u003c/code\u003e（Robert Haas）\u003ca href=\"https://postgr.es/c/94f3ad396\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/4020b370f\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-c709b50fc9819ce3","identity_text":"Add hooks planner_setup_hook, planner_shutdown_hook, joinrel_setup_hook, and join_path_setup_hook (Robert Haas)","part":"changes","patch_ids":["2b28568b9f48f2a8f041078dc99b2900","8238396b0c8cd2dbf766f04e72d51671"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["4020b370f","94f3ad396"],"source_entry_id":"19.0/changes/155","source_hash":"05cdfd200ef8de7716d99f8e741d2df36e1765ba13362348e7c5ed7c703e88f8","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"caf4233879c35f320faf32f86cb11ffb4e5b8913b0e6a0294ae8e719d73f90b7","text":"新增钩子 planner_setup_hook、planner_shutdown_hook、joinrel_setup_hook 和 join_path_setup_hook（Robert Haas）§ §","title":"新增钩子 planner_setup_hook、planner_shutdown_hook、joinrel_setup_hook 和 join_path_setup_hook","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["b140c8d7a"],"commit_groups":[["b140c8d7a"]],"commits":["b140c8d7a"],"cves":[],"db_id":"ea6d1bcac820e221ce2482f7ae671de0","html":"\u003cp\u003e允许扩展将\u003ca href=\"/docs/19/xfunc-sql.html#XFUNC-SQL-FUNCTIONS-RETURNING-SET\" title=\"36.5.9. 返回集合的SQL函数\"\u003e返回集合函数\u003c/a\u003e替换为 \u003ccode\u003eFROM\u003c/code\u003e 子句中的 \u003cacronym\u003eSQL\u003c/acronym\u003e 查询（Paul A. Jungwirth）\u003ca href=\"https://postgr.es/c/b140c8d7a\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-44453272e8d2705a","identity_text":"Allow extensions to replace set-returning functions in the FROM clause with SQL queries (Paul A. Jungwirth)","part":"changes","patch_ids":["e01cd170f7b7ff9f5489103cfc1366ee"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["b140c8d7a"],"source_entry_id":"19.0/changes/156","source_hash":"cbdf8ec5f46bd310380c467a1391aa7d8475e6b2890c5d88bd095207fa3806cc","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"21ec7b0f04a95bf4da4d76c8fee1e8081c07bc766752164eb365c3d9aebeb8f2","text":"允许扩展将返回集合函数替换为 FROM 子句中的 SQL 查询（Paul A. Jungwirth）§","title":"允许扩展将返回集合函数替换为 FROM 子句中的 SQL 查询","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["bd8d9c9bd"],"commit_groups":[["bd8d9c9bd"]],"commits":["bd8d9c9bd"],"cves":[],"db_id":"f94c0ae076ab514a80afc69faa028ea0","html":"\u003cp\u003e将\u003ca href=\"/docs/19/functions-info.html#FUNCTIONS-INFO-SNAPSHOT\" title=\"9.28.8. 事务 ID 和快照信息函数\"\u003emultixid 成员\u003c/a\u003e改为 64 位（Maxim Orlov）\u003ca href=\"https://postgr.es/c/bd8d9c9bd\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-0fd160eef9760243","identity_text":"Make multixid members 64-bit (Maxim Orlov)","part":"changes","patch_ids":["192db2703f79d48c16fa25b3227ae71a"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["bd8d9c9bd"],"source_entry_id":"19.0/changes/157","source_hash":"3465fedcf0b82edf1b7bfbc2da01dd7c9ec73b07547f36dcb6b7cf816e3f91b2","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"b5eb89f3e7ec81151c1887651a26784eed70619fcc43136255213d78407aa72c","text":"将multixid 成员改为 64 位（Maxim Orlov）§","title":"将multixid 成员改为 64 位","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["bab2f27ea"],"commit_groups":[["bab2f27ea"]],"commits":["bab2f27ea"],"cves":[],"db_id":"88aea108cbad74f329ed34bbb24d5b58","html":"\u003cp\u003e将函数原型中的 \u003ccode\u003ebit*\u003c/code\u003e typedef 改为 \u003ccode\u003euint*\u003c/code\u003e（Nathan Bossart）\u003ca href=\"https://postgr.es/c/bab2f27ea\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-b94ecc29f7e66ec2","identity_text":"Change function prototypes to use uint* instead of bit* typedefs (Nathan Bossart)","part":"changes","patch_ids":["f2f586554bfe840eeeb6fed10442b61c"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["bab2f27ea"],"source_entry_id":"19.0/changes/158","source_hash":"b320cd9d35c2a84a0b102b169245ebd7471663e05db3afd1bf87fb5937ffdd66","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"1f0a26efe6da8c4a16f300de65dcbc3a59a88e212e097ce5974576ea42c2958c","text":"将函数原型中的 bit* typedef 改为 uint*（Nathan Bossart）§","title":"将函数原型中的 bit* typedef 改为 uint*","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["0d3dba38c"],"commit_groups":[["0d3dba38c"]],"commits":["0d3dba38c"],"cves":[],"db_id":"b395b8b40db973ba1f42e8f3bc96ef65","html":"\u003cp\u003e允许\u003ca href=\"/docs/19/logicaldecoding-output-plugin.html#LOGICALDECODING-PGOUTPUT\" title=\"47.6.1. pgoutput — 标准逻辑解码输出插件\"\u003e逻辑解码插件\u003c/a\u003e指定其是否不访问共享目录（Antonin Houska）\u003ca href=\"https://postgr.es/c/0d3dba38c\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-1005ea5f9a65cae7","identity_text":"Allow logical decoding plugins to specify if they do not access shared catalogs (Antonin Houska)","part":"changes","patch_ids":["20a3361210f5c3f5967de899d879e2a4"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["0d3dba38c"],"source_entry_id":"19.0/changes/159","source_hash":"72aecd4c45fa67483121399f05e3fba5e37d22a61fbc53317b3d25e399e58d94","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"5e0711ae12acdadfaaabe4eddde6e6bdb9c618b67a4a9ef1b7a92987e17bffe1","text":"允许逻辑解码插件指定其是否不访问共享目录（Antonin Houska）§","title":"允许逻辑解码插件指定其是否不访问共享目录","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["d438a3659"],"commit_groups":[["d438a3659"]],"commits":["d438a3659"],"cves":[],"db_id":"762b28bb17d68d5323dc9407c5a67588","html":"\u003cp\u003e允许 OAuth 验证器提供失败细节（Jacob Champion）\u003ca href=\"https://postgr.es/c/d438a3659\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e通过设置 \u003ca href=\"/docs/19/oauth-validator-callbacks.html#OAUTH-VALIDATOR-CALLBACK-VALIDATE\" title=\"50.3.2. 校验回调\"\u003e\u003ccode\u003eValidatorModuleResult\u003c/code\u003e\u003c/a\u003e 结构体成员 error_detail 实现。\u003c/p\u003e","id":"19.0-65ff587fdac16aff","identity_text":"Allow OAuth validators to supply failure details (Jacob Champion) This is done by setting the ValidatorModuleResult structure member error_detail.","part":"changes","patch_ids":["15e4a19f6ece110d3ecf50e9e73c4a10"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["d438a3659"],"source_entry_id":"19.0/changes/160","source_hash":"a3de1b0d096f969b9a2b8c9fb291db6bf60208f6c0c2ca53640cb33ddb1acac0","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"cf0f5b56015fa5dfda02cf1d6cea35cdf4a9aad1376008543846a923ecca2dc1","text":"允许 OAuth 验证器提供失败细节（Jacob Champion）§ 通过设置 ValidatorModuleResult 结构体成员 error_detail 实现。","title":"允许 OAuth 验证器提供失败细节","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["283e823f9"],"commit_groups":[["283e823f9"]],"commits":["283e823f9"],"cves":[],"db_id":"cc4f0bc9ac955e96b4d6dfebd4746b83","html":"\u003cp\u003e新增简化且改进的共享内存注册函数 \u003ca href=\"/docs/19/xfunc-c.html#XFUNC-SHARED-ADDIN-AT-STARTUP\" title=\"36.10.11.1. 启动时请求共享内存\"\u003e\u003ccode\u003eShmemRequestStruct()\u003c/code\u003e\u003c/a\u003e（Heikki Linnakangas，Ashutosh Bapat）\u003ca href=\"https://postgr.es/c/283e823f9\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/docs/19/xfunc-c.html#XFUNC-SHARED-ADDIN-AT-STARTUP\" title=\"36.10.11.1. 启动时请求共享内存\"\u003e\u003ccode\u003eShmemInitStruct()\u003c/code\u003e\u003c/a\u003e 和 \u003ca href=\"/docs/19/xfunc-c.html#XFUNC-SHARED-ADDIN-AT-STARTUP\" title=\"36.10.11.1. 启动时请求共享内存\"\u003e\u003ccode\u003eShmemInitHash()\u003c/code\u003e\u003c/a\u003e 仍保留以兼容旧代码。\u003c/p\u003e","id":"19.0-d06bea1c7a3daad9","identity_text":"Add simplified and improved shared memory registration function ShmemRequestStruct() (Heikki Linnakangas, Ashutosh Bapat) Functions ShmemInitStruct() and ShmemInitHash() remain for backward compatibility.","part":"changes","patch_ids":["b122528672e367bac2442d8f2ce8108b"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["283e823f9"],"source_entry_id":"19.0/changes/161","source_hash":"19905fe4b2d189c747872544da1ad71d195c0ca3c693c146b3a186c287a0704b","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"731f5a06e4b9dcb066b51d4afcb9e0de5c1fac934a3d9c4972ee8ae3bef481bc","text":"新增简化且改进的共享内存注册函数 ShmemRequestStruct()（Heikki Linnakangas，Ashutosh Bapat）§ ShmemInitStruct() 和 ShmemInitHash() 仍保留以兼容旧代码。","title":"新增简化且改进的共享内存注册函数 ShmemRequestStruct()","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["b3fe098d3"],"commit_groups":[["b3fe098d3"]],"commits":["b3fe098d3"],"cves":[],"db_id":"f56c91e7ea9e47d462e10768e31bde92","html":"\u003cp\u003e新增服务器变量 \u003ca href=\"/docs/19/runtime-config-preset.html#GUC-DEBUG-EXEC-BACKEND\"\u003e\u003ccode\u003edebug_exec_backend\u003c/code\u003e\u003c/a\u003e，用于报告参数如何传递给新后端（Daniel Gustafsson）\u003ca href=\"https://postgr.es/c/b3fe098d3\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-7b3961d2c4b1b02f","identity_text":"Add server variable debug_exec_backend to report how parameters are passed to new backends (Daniel Gustafsson)","part":"changes","patch_ids":["6996a756a2209127ea911906cc212ee5"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["b3fe098d3"],"source_entry_id":"19.0/changes/162","source_hash":"ddcc37cfe5066223ded4c597165664a47f8df36e48c9e12d782d9cafb9449f6b","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"57e78bd212bc321f09c4b3268a65ed26ffdfffe64d790f1fad36b78c18194798","text":"新增服务器变量 debug_exec_backend，用于报告参数如何传递给新后端（Daniel Gustafsson）§","title":"新增服务器变量 debug_exec_backend，用于报告参数如何传递给新后端","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["e4d8a2af0"],"commit_groups":[["e4d8a2af0"]],"commits":["e4d8a2af0"],"cves":[],"db_id":"ba840a11fad1344360a49032bc6c9bf0","html":"\u003cp\u003e新增关于\u003ca href=\"/docs/19/ddl-temporal-tables.html\" title=\"5.7. 时态表\"\u003e时态表\u003c/a\u003e的文档章节（Paul A. Jungwirth）\u003ca href=\"https://postgr.es/c/e4d8a2af0\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-59fadc182f065384","identity_text":"Add documentation section about temporal tables (Paul A. Jungwirth)","part":"changes","patch_ids":["6199d082f1b7ffe83b1542803732c5b0"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["e4d8a2af0"],"source_entry_id":"19.0/changes/163","source_hash":"cfa3938488ba5a382ebbf3ac30a262741cbc781d722187bf310f0b6d7a746f5f","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"7fce6be69bf094f60533b06c88d696d5fc0124240941764129ee15cf74310d38","text":"新增关于时态表的文档章节（Paul A. Jungwirth）§","title":"新增关于时态表的文档章节","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["02976b0a1"],"commit_groups":[["02976b0a1"]],"commits":["02976b0a1"],"cves":[],"db_id":"6e2a6dcc65b08df25684b4c976e8261f","html":"\u003cp\u003e记录控制\u003ca href=\"/docs/19/regress-run.html#REGRESS-RUN-PATH-SUBSTITUTION\" title=\"31.1.6. 路径替换\"\u003e回归测试\u003c/a\u003e的环境变量（Michael Paquier）\u003ca href=\"https://postgr.es/c/02976b0a1\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-e74356543ac6b0e4","identity_text":"Document the environment variables that control the regression tests (Michael Paquier)","part":"changes","patch_ids":["db371fbd69214646dc429f89122f5b44"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["02976b0a1"],"source_entry_id":"19.0/changes/164","source_hash":"3c6d19ffa21c52c77bb6943f87c696d892441f56b6aa96541174e0ced30140b3","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"d64cc4af42817101fefe650bc306c67f8a5f2ed7253544890808aa96b29b6216","text":"记录控制回归测试的环境变量（Michael Paquier）§","title":"记录控制回归测试的环境变量","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["b30656ce0"],"commit_groups":[["b30656ce0"]],"commits":["b30656ce0"],"cves":[],"db_id":"e0b8431931452801e2bf951c6fc029bf","html":"\u003cp\u003e更新文档中的\u003ca href=\"/docs/19/server-start.html\" title=\"18.3. 启动数据库服务器\"\u003esystemd 示例\u003c/a\u003e，加入 restart 设置（Andrew Jackson）\u003ca href=\"https://postgr.es/c/b30656ce0\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-c39749f3e403c256","identity_text":"Update documented systemd example to include a restart setting (Andrew Jackson)","part":"changes","patch_ids":["d5055a62c0b50ca7417a6aee5168d0cc"],"related_changes":[],"relations":[],"section":"源代码","section_path":["源代码"],"source_commits":["b30656ce0"],"source_entry_id":"19.0/changes/165","source_hash":"9e5278ec18324c26f53d4682b7cac16a25e724bdefb3a51af29c16622606160b","source_url":"/docs/release/19.0/#RELEASE-19-SOURCE-CODE","statement_hash":"5defbf603db0b450d9792692393d17b48cda3fae0f0d7e20de6bf6a5ab9fdeda","text":"更新文档中的systemd 示例，加入 restart 设置（Andrew Jackson）§","title":"更新文档中的systemd 示例，加入 restart 设置","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["5883ff30b","6455e55b0"],"commit_groups":[["5883ff30b"],["6455e55b0"]],"commits":["5883ff30b","6455e55b0"],"cves":[],"db_id":"4ac958c4dfcd715caf1af5422620f505","html":"\u003cp\u003e新增\u003ca href=\"/docs/19/pgplanadvice.html\" title=\"F.30. pg_plan_advice — 帮助规划器获得正确的计划\"\u003epg_plan_advice\u003c/a\u003e模块，用于稳定和控制规划器决策（Robert Haas）\u003ca href=\"https://postgr.es/c/5883ff30b\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/6455e55b0\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-f4695b5ec62d0405","identity_text":"Add pgplanadvice module to stabilize and control planner decisions (Robert Haas)","part":"changes","patch_ids":["56d63f5186ca503452a6223c6f729bc0","b1613f7f0a064021e597c08a0f245a49"],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":["5883ff30b","6455e55b0"],"source_entry_id":"19.0/changes/166","source_hash":"97924ebded069e94b969b2483dadf89dfcd806dca8ed03452e99ded2ac8636ca","source_url":"/docs/release/19.0/#RELEASE-19-MODULES","statement_hash":"31e3ff58f47fcca7b27455c485f5c16cf539a34db72635e763654a43b2f9850c","text":"新增pg_plan_advice模块，用于稳定和控制规划器决策（Robert Haas）§§","title":"新增pg_plan_advice模块，用于稳定和控制规划器决策","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["c10edb102","e8ec19aa3"],"commit_groups":[["c10edb102"],["e8ec19aa3"]],"commits":["c10edb102","e8ec19aa3"],"cves":[],"db_id":"45e851918f3743e4972a5ecf2ab78f59","html":"\u003cp\u003e新增扩展\u003ca href=\"/docs/19/pgstashadvice.html\" title=\"F.33. pg_stash_advice — 存储并自动应用计划建议\"\u003epg_stash_advice\u003c/a\u003e，用于按 query-id 指定建议（Robert Haas，Lukas Fittl）\u003ca href=\"https://postgr.es/c/e8ec19aa3\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/c10edb102\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-6a39c7d670ca51f6","identity_text":"Add extension pgstashadvice to allow per-query-id advice to be specified (Robert Haas, Lukas Fittl)","part":"changes","patch_ids":["9da8a567937023cd2a129fdfde982f00","f4a18a80b979077db607a9e188bc8ab2"],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":["c10edb102","e8ec19aa3"],"source_entry_id":"19.0/changes/167","source_hash":"cd73a2b0c2b7e3e3ea5c580c529aed14af5174fcef7624106cfc364f9b712af8","source_url":"/docs/release/19.0/#RELEASE-19-MODULES","statement_hash":"d9820baa158db7d0d39f696739da9f24dc384ddfeff94eb80a3383616be8699a","text":"新增扩展pg_stash_advice，用于按 query-id 指定建议（Robert Haas，Lukas Fittl）§§","title":"新增扩展pg_stash_advice，用于按 query-id 指定建议","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["bee23ea4d"],"commit_groups":[["bee23ea4d"]],"commits":["bee23ea4d"],"cves":[],"db_id":"482299b237fbc46a6a50bdb47b208788","html":"\u003cp\u003e将 \u003ca href=\"/docs/19/sql-fetch.html\" title=\"FETCH\"\u003e\u003ccode\u003eFETCH\u003c/code\u003e\u003c/a\u003e 查询的大小作为常量显示在\u003ca href=\"/docs/19/pgstatstatements.html\" title=\"F.34. pg_stat_statements — 跟踪 SQL 计划和执行统计信息\"\u003epg_stat_statements\u003c/a\u003e中（Sami Imseih）\u003ca href=\"https://postgr.es/c/bee23ea4d\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e不同大小的 FETCH 现在会在\u003ca href=\"/docs/19/pgstatstatements.html\" title=\"F.34. pg_stat_statements — 跟踪 SQL 计划和执行统计信息\"\u003epg_stat_statements\u003c/a\u003e输出中归并到一起。\u003c/p\u003e","id":"19.0-01cdd9dc3f4b9e80","identity_text":"Show sizes of FETCH queries as constants in pgstatstatements (Sami Imseih) Fetches of different sizes will now be grouped together in pgstatstatements output.","part":"changes","patch_ids":["d97e227d21ad315d6b87301eb67684d9"],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":["bee23ea4d"],"source_entry_id":"19.0/changes/168","source_hash":"d85a64e309179f392fedcc0a28e405580913b93baeb95870909f8738d112e1c4","source_url":"/docs/release/19.0/#RELEASE-19-MODULES","statement_hash":"56b6507c53757966822dc5b02b086499fcab94db3afe43cf0b16f70fd821aff5","text":"将 FETCH 查询的大小作为常量显示在pg_stat_statements中（Sami Imseih）§ 不同大小的 FETCH 现在会在pg_stat_statements输出中归并到一起。","title":"将 FETCH 查询的大小作为常量显示在pg_stat_statements中","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["3357471cf"],"commit_groups":[["3357471cf"]],"commits":["3357471cf"],"cves":[],"db_id":"8b533dfc0cb31323a0af65fc5498095a","html":"\u003cp\u003e新增\u003ca href=\"/docs/19/sql-prepare.html\" title=\"PREPARE\"\u003e通用计划和自定义计划\u003c/a\u003e计数到\u003ca href=\"/docs/19/pgstatstatements.html\" title=\"F.34. pg_stat_statements — 跟踪 SQL 计划和执行统计信息\"\u003epg_stat_statements\u003c/a\u003e（Sami Imseih）\u003ca href=\"https://postgr.es/c/3357471cf\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-5a7fd99f6a80c142","identity_text":"Add generic and custom plan counts to pgstatstatements (Sami Imseih)","part":"changes","patch_ids":["a68aa4c27f58910e3aff221fa91fe3d1"],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":["3357471cf"],"source_entry_id":"19.0/changes/169","source_hash":"db449b9cf7723032feb95c4a5892ceae6a4041ae1341f3885e0e2384a70acc9a","source_url":"/docs/release/19.0/#RELEASE-19-MODULES","statement_hash":"6572579d1d4bb8fcbd1defa3afe48fb510f4f443e55a8c0caa51da2f257f46f3","text":"新增通用计划和自定义计划计数到pg_stat_statements（Sami Imseih）§","title":"新增通用计划和自定义计划计数到pg_stat_statements","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["4b203d499"],"commit_groups":[["4b203d499"]],"commits":["4b203d499"],"cves":[],"db_id":"326f982a8e5fdb76f61bffa174bc89ff","html":"\u003cp\u003e重构\u003ca href=\"/docs/19/pgbuffercache.html\" title=\"F.25. pg_buffercache — 检查 PostgreSQL 缓冲区缓存状态\"\u003epg_buffercache\u003c/a\u003e的共享内存映射报告（Bertrand Drouvot）\u003ca href=\"https://postgr.es/c/4b203d499\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e新增函数 \u003ccode\u003epg_buffercache_os_pages()\u003c/code\u003e 和系统视图 \u003ccode\u003epg_buffercache_os_pages\u003c/code\u003e，用于报告共享内存映射；函数还可选包含 \u003cacronym\u003eNUMA\u003c/acronym\u003e 细节。为向后兼容，\u003ccode\u003epg_buffercache_numa_pages()\u003c/code\u003e 仍然保留。\u003c/p\u003e","id":"19.0-c43853d353669197","identity_text":"Refactor pgbuffercache reporting of shared memory mapping (Bertrand Drouvot) New function pg_buffercache_os_pages() and system view pg_buffercache_os_pages allow reporting of shared memory mapping; the function optionally includes NUMA details. Function pg_buffercache_numa_pages() remains for backward compatibility.","part":"changes","patch_ids":["dc1afd745ffc505feaf1056588cd0ce0"],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":["4b203d499"],"source_entry_id":"19.0/changes/170","source_hash":"cdb543d6f694b6094914686a17370359ab98788faf039e140086b20ed6b356c8","source_url":"/docs/release/19.0/#RELEASE-19-MODULES","statement_hash":"c3d16efbfd858190d76129f49a1cf3a500efcbd1abc04e1f51e615f76be58ebb","text":"重构pg_buffercache的共享内存映射报告（Bertrand Drouvot）§ 新增函数 pg_buffercache_os_pages() 和系统视图 pg_buffercache_os_pages，用于报告共享内存映射；函数还可选包含 NUMA 细节。为向后兼容，pg_buffercache_numa_pages() 仍然保留。","title":"重构pg_buffercache的共享内存映射报告","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["9ccc049df"],"commit_groups":[["9ccc049df"]],"commits":["9ccc049df"],"cves":[],"db_id":"5ae5dd2be3aa3ff0706e77085b7bcfb3","html":"\u003cp\u003e为\u003ca href=\"/docs/19/pgbuffercache.html\" title=\"F.25. pg_buffercache — 检查 PostgreSQL 缓冲区缓存状态\"\u003epg_buffercache\u003c/a\u003e新增将缓冲区标记为脏的函数（Nazir Bilal Yavuz）\u003ca href=\"https://postgr.es/c/9ccc049df\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这些函数为 \u003ccode\u003epg_buffercache_mark_dirty()\u003c/code\u003e、\u003ccode\u003epg_buffercache_mark_dirty_relation()\u003c/code\u003e 和 \u003ccode\u003epg_buffercache_mark_dirty_all()\u003c/code\u003e。\u003c/p\u003e","id":"19.0-273a964446fe6c86","identity_text":"Add functions to pgbuffercache to mark buffers as dirty (Nazir Bilal Yavuz) The functions are pg_buffercache_mark_dirty(), pg_buffercache_mark_dirty_relation(), and pg_buffercache_mark_dirty_all().","part":"changes","patch_ids":["24999546e7c8d92a9f164cda3b794684"],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":["9ccc049df"],"source_entry_id":"19.0/changes/171","source_hash":"bc1d2a6288d65506efe775c61d0dd80807e28e7ca8926ab2785db1430566dc50","source_url":"/docs/release/19.0/#RELEASE-19-MODULES","statement_hash":"bcca474d77e8166e4d3e2b856552a9301aa699dae912762b4edaf916d57dbbae","text":"为pg_buffercache新增将缓冲区标记为脏的函数（Nazir Bilal Yavuz）§ 这些函数为 pg_buffercache_mark_dirty()、pg_buffercache_mark_dirty_relation() 和 pg_buffercache_mark_dirty_all()。","title":"为pg_buffercache新增将缓冲区标记为脏的函数","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["62c3b4cd9"],"commit_groups":[["62c3b4cd9"]],"commits":["62c3b4cd9"],"cves":[],"db_id":"7c1a1048290344a4c12534360c09ece8","html":"\u003cp\u003e允许在\u003ca href=\"/docs/19/sql-prepare.html\" title=\"PREPARE\"\u003e预备语句\u003c/a\u003e中向\u003ca href=\"/docs/19/postgres-fdw.html\" title=\"F.40. postgres_fdw — 访问存储在外部 PostgreSQL 服务器中的数据\"\u003epostgres_fdw\u003c/a\u003e外部服务器下推数组比较（Alexander Pyhalov）\u003ca href=\"https://postgr.es/c/62c3b4cd9\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-eddedbbb429acb3a","identity_text":"Allow pushdown of array comparisons in prepared statements to postgres-fdw foreign servers (Alexander Pyhalov)","part":"changes","patch_ids":["f62f187297629adfd7fcf55390ff9b7f"],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":["62c3b4cd9"],"source_entry_id":"19.0/changes/172","source_hash":"bf6501c55945ab2cfc9cfe31aa3a3cb39698957c6cba992abf2bbd630f5ec772","source_url":"/docs/release/19.0/#RELEASE-19-MODULES","statement_hash":"2fad95447b0442a3e310ff1b8fc810cccdbd60f2879adb6fdd18627a87ff3b4a","text":"允许在预备语句中向postgres_fdw外部服务器下推数组比较（Alexander Pyhalov）§","title":"允许在预备语句中向postgres_fdw外部服务器下推数组比较","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["28972b6fc","48965e146"],"commit_groups":[["28972b6fc"],["48965e146"]],"commits":["28972b6fc","48965e146"],"cves":[],"db_id":"e5338180d766356be9f67fddaeae1994","html":"\u003cp\u003e允许从\u003ca href=\"/docs/19/sql-createforeigndatawrapper.html\" title=\"CREATE FOREIGN DATA WRAPPER\"\u003e外部数据包装器服务器\u003c/a\u003e获取统计信息（Corey Huinker，Etsuro Fujita）\u003ca href=\"https://postgr.es/c/28972b6fc\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/48965e146\"\u003e§\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/docs/19/postgres-fdw.html\" title=\"F.40. postgres_fdw — 访问存储在外部 PostgreSQL 服务器中的数据\"\u003epostgres_fdw\u003c/a\u003e通过 \u003ccode\u003eimport_stats\u003c/code\u003e 选项启用此功能。默认情况下，\u003ca href=\"/docs/19/sql-analyze.html\" title=\"ANALYZE\"\u003e\u003ccode\u003eANALYZE\u003c/code\u003e\u003c/a\u003e 会从远端服务器取回行并在本地生成统计信息。\u003c/p\u003e","id":"19.0-1e03f39a22c1e032","identity_text":"Allow the retrieval of statistics from foreign data wrapper servers (Corey Huinker, Etsuro Fujita) This is enabled for postgres-fdw by using the option import_stats. The default is for ANALYZE to retrieve rows from the remote server to locally generate statistics.","part":"changes","patch_ids":["0a3e4f8c65c86bee4910df07d96c9f0f","0fbcb5c78b6ff5e00b109690209d5e8a"],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":["28972b6fc","48965e146"],"source_entry_id":"19.0/changes/173","source_hash":"c491a770f56fc770088cd79a575cd702765358d6bb67a46710a23f97506d0116","source_url":"/docs/release/19.0/#RELEASE-19-MODULES","statement_hash":"d6299e58b604a812f27e3f536f8f239cf792bbb9bb8a9bb973017b5a5bb6a8f1","text":"允许从外部数据包装器服务器获取统计信息（Corey Huinker，Etsuro Fujita）§§ postgres_fdw通过 import_stats 选项启用此功能。默认情况下，ANALYZE 会从远端服务器取回行并在本地生成统计信息。","title":"允许从外部数据包装器服务器获取统计信息","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["26cb14aea"],"commit_groups":[["26cb14aea"]],"commits":["26cb14aea"],"cves":[],"db_id":"f3aeae7bb3242d31771a456e66e4cb8f","html":"\u003cp\u003e允许\u003ca href=\"/docs/19/file-fdw.html\" title=\"F.15. file_fdw — 访问服务器文件系统中的数据文件\"\u003efile_fdw\u003c/a\u003e读取使用多行 HEADER 的文件或程序输出（Shinya Kato）\u003ca href=\"https://postgr.es/c/26cb14aea\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-429d7b7d959eecab","identity_text":"Allow file-fdw to read files or program output that uses multi-line headers (Shinya Kato)","part":"changes","patch_ids":["3ca3196d311c8cbda6df506d55e2219f"],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":["26cb14aea"],"source_entry_id":"19.0/changes/174","source_hash":"5711000ea7d7b32f82875c01a7d9125ecc2fd19b31a8bc9e4f83fa7d14d22f93","source_url":"/docs/release/19.0/#RELEASE-19-MODULES","statement_hash":"8d83ef0b2f482eb9ecbf1ffdcd487f18316ca92d9d483dbf4dabd8a9711c20c8","text":"允许file_fdw读取使用多行 HEADER 的文件或程序输出（Shinya Kato）§","title":"允许file_fdw读取使用多行 HEADER 的文件或程序输出","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["61c36a34a"],"commit_groups":[["61c36a34a"]],"commits":["61c36a34a"],"cves":[],"db_id":"9b13adac2e7d1b08fdc1e15624463bce","html":"\u003cp\u003e新增服务器变量 \u003ccode\u003eauto_explain.log_io\u003c/code\u003e，为\u003ca href=\"/docs/19/auto-explain.html\" title=\"F.3. auto_explain — 记录慢查询的执行计划\"\u003e\u003cspan\u003eauto_explain\u003c/span\u003e\u003c/a\u003e添加 IO 报告（Tomas Vondra）\u003ca href=\"https://postgr.es/c/61c36a34a\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-ad09c20284b84625","identity_text":"Add server variable auto_explain.log_io to add IO reporting to auto_explain (Tomas Vondra)","part":"changes","patch_ids":["45ed70c12bcc1a7ec0563a04c899b0f2"],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":["61c36a34a"],"source_entry_id":"19.0/changes/175","source_hash":"5b7a66994e15136bcd9c1e24155de1987271bd443a76ea03aadb7d13c4f61804","source_url":"/docs/release/19.0/#RELEASE-19-MODULES","statement_hash":"99e7c0ae99e164554f864d219ea2290b866bc2d95b00489b33531e6b60c7b906","text":"新增服务器变量 auto_explain.log_io，为auto_explain添加 IO 报告（Tomas Vondra）§","title":"新增服务器变量 auto_explain.log_io，为auto_explain添加 IO 报告","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["e972dff6c"],"commit_groups":[["e972dff6c"]],"commits":["e972dff6c"],"cves":[],"db_id":"bd12ac3aea9a8d6d1cdfd0013d085016","html":"\u003cp\u003e允许\u003ca href=\"/docs/19/auto-explain.html\" title=\"F.3. auto_explain — 记录慢查询的执行计划\"\u003e\u003cspan\u003eauto_explain\u003c/span\u003e\u003c/a\u003e添加扩展特定的 \u003ca href=\"/docs/19/sql-explain.html\" title=\"EXPLAIN\"\u003e\u003ccode\u003eEXPLAIN\u003c/code\u003e\u003c/a\u003e 选项，并通过服务器变量 \u003ccode\u003eauto_explain.log_extension_options\u003c/code\u003e 控制（Robert Haas）\u003ca href=\"https://postgr.es/c/e972dff6c\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-90824fc0bf10593e","identity_text":"Allow auto_explain to add extension-specific EXPLAIN options via server variable auto_explain.log_extension_options (Robert Haas)","part":"changes","patch_ids":["858dba353a2947f79be7f84249de7df9"],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":["e972dff6c"],"source_entry_id":"19.0/changes/176","source_hash":"a46f9bdffcb91e8068684045c20d81500cedb2b2840fcdb30b054c323fd289c9","source_url":"/docs/release/19.0/#RELEASE-19-MODULES","statement_hash":"2c64f08a5f6253b60f1ee5fc117e84e13d747b680dc284ceafce932968264453","text":"允许auto_explain添加扩展特定的 EXPLAIN 选项，并通过服务器变量 auto_explain.log_extension_options 控制（Robert Haas）§","title":"允许auto_explain添加扩展特定的 EXPLAIN 选项，并通过服务器变量 auto_explain.log_extension_options 控制","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["e2b64fcef","fc896821c"],"commit_groups":[["e2b64fcef"],["fc896821c"]],"commits":["e2b64fcef","fc896821c"],"cves":[],"db_id":"6330392f29f43702451e3b94f5b40ee6","html":"\u003cp\u003e修改\u003ca href=\"/docs/19/btree-gin.html\" title=\"F.7. btree_gin — 具有 B-树行为的 GIN 操作符类\"\u003ebtree_gin\u003c/a\u003e，使其支持 btree 所支持的所有跨类型比较（Tom Lane）\u003ca href=\"https://postgr.es/c/e2b64fcef\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/fc896821c\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-29bcdfcac418df19","identity_text":"Change btree-gin to support all btree-supported cross-type comparisons (Tom Lane)","part":"changes","patch_ids":["465447a0b402e5edd236531603aa582e","7a3130d69f709a301347e069b21a7e35"],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":["e2b64fcef","fc896821c"],"source_entry_id":"19.0/changes/177","source_hash":"edbbbc7feb56b2d1a5299680352e405d62c795222ad63253dac5f142b6a819a4","source_url":"/docs/release/19.0/#RELEASE-19-MODULES","statement_hash":"d6132868a4bcffb9ab5280c1c4a08fb06978895a355b7dea4f1bad6174c4bb69","text":"修改btree_gin，使其支持 btree 所支持的所有跨类型比较（Tom Lane）§ §","title":"修改btree_gin，使其支持 btree 所支持的所有跨类型比较","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["4c910f3bb","d841ca2d1"],"commit_groups":[["4c910f3bb"],["d841ca2d1"]],"commits":["4c910f3bb","d841ca2d1"],"cves":[],"db_id":"c1cae81ea4c701775cad29ff3f55752c","html":"\u003cp\u003e通过流式读取改进\u003ca href=\"/docs/19/bloom.html\" title=\"F.6. bloom — 布隆过滤器索引访问方法\"\u003ebloom\u003c/a\u003e索引性能（Xuneng Zhou）\u003ca href=\"https://postgr.es/c/4c910f3bb\"\u003e§\u003c/a\u003e\u003ca href=\"https://postgr.es/c/d841ca2d1\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-ac704872f4332fc0","identity_text":"Improve performance of bloom indexes by using streaming reads (Xuneng Zhou)","part":"changes","patch_ids":["686df171a67aee372faf0cb6692be924","b7f9224c78446f20d7662ef68b714cce"],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":["4c910f3bb","d841ca2d1"],"source_entry_id":"19.0/changes/178","source_hash":"aaa048beb10dd8b7c1c5a7624c84cf705067a690cea9ae8598847bbbc1208b91","source_url":"/docs/release/19.0/#RELEASE-19-MODULES","statement_hash":"c18f530a0c78d3ed5bce4f12151346d68f3d1cc0202c7495ed6e256e0418d986","text":"通过流式读取改进bloom索引性能（Xuneng Zhou）§§","title":"通过流式读取改进bloom索引性能","variants":[],"version":"19.0"},{"also_in":[],"category":"performance","category_label":"Performance","commit_aliases":["213f0079b","ae58189a4"],"commit_groups":[["213f0079b"],["ae58189a4"]],"commits":["213f0079b","ae58189a4"],"cves":[],"db_id":"8a7e7de06c5684b8c541a0615c99b239","html":"\u003cp\u003e使用流式读取改进\u003ca href=\"/docs/19/pgstattuple.html\" title=\"F.35. pgstattuple — 获取元组级统计信息\"\u003epgstattuple\u003c/a\u003e的性能（Xuneng Zhou）\u003ca href=\"https://postgr.es/c/213f0079b\"\u003e§\u003c/a\u003e \u003ca href=\"https://postgr.es/c/ae58189a4\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-c4b2a031dd653e0a","identity_text":"Improve performance of pgstattuple by using streaming reads (Xuneng Zhou)","part":"changes","patch_ids":["960a7173fce3ace43c22feabf9818d26","f88c740e4a92e5ef0efe0673eff46dbc"],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":["213f0079b","ae58189a4"],"source_entry_id":"19.0/changes/179","source_hash":"cc178c65f3173eb3e64fac7f6710652e29021bc1410e8a539e39ce0204887ee8","source_url":"/docs/release/19.0/#RELEASE-19-MODULES","statement_hash":"6ce3c55548064e89eb5c7d1302ac0d2dc42f31f405d0d8d3277e6d4829f61f8b","text":"使用流式读取改进pgstattuple的性能（Xuneng Zhou）§ §","title":"使用流式读取改进pgstattuple的性能","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["e39ece034"],"commit_groups":[["e39ece034"]],"commits":["e39ece034"],"cves":[],"db_id":"2f4cdc177b6b4856fb1182f67f4b9591","html":"\u003cp\u003e允许\u003ca href=\"/docs/19/fuzzystrmatch.html\" title=\"F.16. fuzzystrmatch — 确定字符串的相似性和距离\"\u003efuzzystrmatch\u003c/a\u003e的 \u003ccode\u003edmetaphone()\u003c/code\u003e 使用 \u003cacronym\u003eASCII\u003c/acronym\u003e 以外的单字节编码（Peter Eisentraut）\u003ca href=\"https://postgr.es/c/e39ece034\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-5a85f6473dd52e4d","identity_text":"Allow fuzzystrmatch 's dmetaphone() to use single-byte encodings beyond ASCII (Peter Eisentraut)","part":"changes","patch_ids":["c0bb5dadb01930e4bf51801126b09e77"],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":["e39ece034"],"source_entry_id":"19.0/changes/180","source_hash":"6938b43dc65fc6a1bb7210e2e528f0f619e6e5ac4a694502478fac25531d1d07","source_url":"/docs/release/19.0/#RELEASE-19-MODULES","statement_hash":"90a2b497dfcd9fbcde3399375b31dc47ae8b5ccbdc57e385d35ed61273d0949d","text":"允许fuzzystrmatch的 dmetaphone() 使用 ASCII 以外的单字节编码（Peter Eisentraut）§","title":"允许fuzzystrmatch的 dmetaphone() 使用 ASCII 以外的单字节编码","variants":[],"version":"19.0"},{"also_in":[],"category":"feature","category_label":"Features","commit_aliases":["3c5ec35de"],"commit_groups":[["3c5ec35de"]],"commits":["3c5ec35de"],"cves":[],"db_id":"5bd49119a0395f6378c1f44a163d7fec","html":"\u003cp\u003e修改 \u003ca href=\"/docs/19/oid2name.html\" title=\"oid2name\"\u003e\u003cspan\u003eoid2name\u003c/span\u003e\u003c/a\u003e \u003ccode\u003e--extended\u003c/code\u003e 以报告关系文件路径（David Bidoc）\u003ca href=\"https://postgr.es/c/3c5ec35de\"\u003e§\u003c/a\u003e\u003c/p\u003e","id":"19.0-4c2b4282c1fc2d4e","identity_text":"Modify oid2name --extended to report the relation file path (David Bidoc)","part":"changes","patch_ids":["bd4ef9575357e38c8246f151b82b9c64"],"related_changes":[],"relations":[],"section":"附加模块","section_path":["附加模块"],"source_commits":["3c5ec35de"],"source_entry_id":"19.0/changes/181","source_hash":"f16432d570e8d20b878f5a2ec611a0940b1517d3c6632205a0d423d0f97e0ef2","source_url":"/docs/release/19.0/#RELEASE-19-MODULES","statement_hash":"e3b3e66f689dd66d8d6abd9f1abbdd0e2a059ba32e8928dd5543692c1c506e0a","text":"修改 oid2name --extended 以报告关系文件路径（David Bidoc）§","title":"修改 oid2name --extended 以报告关系文件路径","variants":[],"version":"19.0"}],"entry_count":198,"eol":"","eol_date":"","label":"19beta4","major":"19","manual":"19","manual_build":"19beta4","manual_url":"/docs/19/release-19.html","migration_html":"\u003cp\u003e对于想从任何先前版本迁移数据的用户，需要使用\u003ca href=\"/docs/19/app-pg-dumpall.html\" title=\"pg_dumpall\"\u003e\u003cspan\u003e\u003cspan\u003epg_dumpall\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e执行导出/恢复，或者使用\u003ca href=\"/docs/19/pgupgrade.html\" title=\"pg_upgrade\"\u003e\u003cspan\u003e\u003cspan\u003epg_upgrade\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e，或者使用逻辑复制。有关迁移到新主版本的一般信息，请参见\u003ca href=\"/docs/19/upgrading.html\" title=\"18.6. 升级 PostgreSQL 集簇\"\u003e第 18.6 节\u003c/a\u003e。\u003c/p\u003e\n\u003cp\u003e19 版本包含若干可能影响与先前版本兼容性的更改。请注意以下不兼容项：\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e","minor":0,"placeholder":false,"source_as_of":"2026-09-14","source_url":"/docs/release/19.0/","status":"preview","status_label":"Preview","supported":false,"version":"19.0"}],"mode":"release","release_count":1,"remaining_cves":[],"security_as_of":"2026-09-26","security_regressions":[],"source_as_of":"2026-09-26","stats":[{"count":198,"key":"all","label":"All changes"},{"count":161,"key":"feature","label":"Features"},{"count":0,"key":"bugfix","label":"Bug fixes"},{"count":0,"key":"security","label":"Security"},{"count":20,"key":"performance","label":"Performance"},{"count":17,"key":"compatibility","label":"Compatibility"},{"count":0,"key":"improvement","label":"Improvements"}],"to_release":{"build":"19beta4","changes_count":181,"compatibility_count":17,"content_hash":"5ae71d02d668ade7b2e0da1d55a8cba30fb8024afa72fa205822bdc3180d725b","date":"","date_text":"2026-??-??，截至 2026-09-14","doc_git":"","doc_loaded_at":"2026-09-26T02:56:33.522705","entry_count":198,"eol":"","eol_date":"","label":"19beta4","major":"19","manual":"19","manual_build":"19beta4","manual_url":"/docs/19/release-19.html","migration_html":"\u003cp\u003e对于想从任何先前版本迁移数据的用户，需要使用\u003ca href=\"/docs/19/app-pg-dumpall.html\" title=\"pg_dumpall\"\u003e\u003cspan\u003e\u003cspan\u003epg_dumpall\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e执行导出/恢复，或者使用\u003ca href=\"/docs/19/pgupgrade.html\" title=\"pg_upgrade\"\u003e\u003cspan\u003e\u003cspan\u003epg_upgrade\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e，或者使用逻辑复制。有关迁移到新主版本的一般信息，请参见\u003ca href=\"/docs/19/upgrading.html\" title=\"18.6. 升级 PostgreSQL 集簇\"\u003e第 18.6 节\u003c/a\u003e。\u003c/p\u003e\n\u003cp\u003e19 版本包含若干可能影响与先前版本兼容性的更改。请注意以下不兼容项：\u003c/p\u003e\n\u003cdiv\u003e\n\u003c/div\u003e","minor":0,"placeholder":false,"source_as_of":"2026-09-14","source_url":"/docs/release/19.0/","status":"preview","status_label":"Preview","supported":false,"version":"19.0"},"total":198,"warnings":["PostgreSQL 19beta4 has not been released. These notes describe the indicated preview build."]}
