{"format": 1, "mode": "release", "from_release": null, "to_release": {"date": "2019-10-03", "build": "12.0", "major": "12", "minor": 0, "manual": "12", "status": "stable", "doc_git": "", "version": "12.0", "eol_date": "2024-11-21", "date_text": "2019-10-03", "supported": false, "manual_url": "/docs/12/release-12.html", "source_url": "/docs/release/12.0/", "entry_count": 180, "placeholder": false, "content_hash": "68990788881eeedb3cf30b167778c49365e75785f3af8c26e88dfc187abbf68f", "manual_build": "12.22", "source_as_of": "", "changes_count": 157, "doc_loaded_at": "2026-09-26T02:56:41.471523", "migration_html": "<p>对于希望从任何先前版本迁移数据的用户，需要使用<a href=\"/docs/12/app-pg-dumpall.html\" title=\"pg_dumpall\"><span><span>pg_dumpall</span></span></a>进行导出/恢复，或使用<a href=\"/docs/12/pgupgrade.html\" title=\"pg_upgrade\"><span><span>pg_upgrade</span></span></a>或逻辑复制。有关迁移到新主版本的一般信息，请参见<a href=\"/docs/12/upgrading.html\" title=\"18.6. 升级 PostgreSQL 集簇\">第 18.6 节</a>。</p>\n<p>版本 12 包含许多可能影响与先前版本兼容性的变更。请注意以下不兼容性：</p>\n<div>\n</div>", "compatibility_count": 23, "label": "12.0", "status_label": "历史版本", "eol": "2024-11-21", "age_days": 2554, "support_days": -678}, "groups": [{"date": "2019-10-03", "build": "12.0", "major": "12", "minor": 0, "manual": "12", "status": "stable", "doc_git": "", "version": "12.0", "eol_date": "2024-11-21", "date_text": "2019-10-03", "supported": false, "manual_url": "/docs/12/release-12.html", "source_url": "/docs/release/12.0/", "entry_count": 180, "placeholder": false, "content_hash": "68990788881eeedb3cf30b167778c49365e75785f3af8c26e88dfc187abbf68f", "manual_build": "12.22", "source_as_of": "", "changes_count": 157, "doc_loaded_at": "2026-09-26T02:56:41.471523", "migration_html": "<p>对于希望从任何先前版本迁移数据的用户，需要使用<a href=\"/docs/12/app-pg-dumpall.html\" title=\"pg_dumpall\"><span><span>pg_dumpall</span></span></a>进行导出/恢复，或使用<a href=\"/docs/12/pgupgrade.html\" title=\"pg_upgrade\"><span><span>pg_upgrade</span></span></a>或逻辑复制。有关迁移到新主版本的一般信息，请参见<a href=\"/docs/12/upgrading.html\" title=\"18.6. 升级 PostgreSQL 集簇\">第 18.6 节</a>。</p>\n<p>版本 12 包含许多可能影响与先前版本兼容性的变更。请注意以下不兼容性：</p>\n<div>\n</div>", "compatibility_count": 23, "label": "12.0", "status_label": "历史版本", "eol": "2024-11-21", "age_days": 2554, "support_days": -678, "entries": [{"id": "12.0-b3154fc397f8627e", "cves": [], "html": "<p>移除 <a href=\"/docs/12/datatype-oid.html\" title=\"8.19. 对象标识符类型\">oid</a> 列的特殊行为（Andres Freund，John Naylor）<a href=\"https://postgr.es/c/578b22971\">§</a></p>\n<p>以前，可以在建表时使用 <code>WITH OIDS</code> 指定一个通常不可见的 <code>oid</code> 列；此功能已被移除。仍可将列显式声明为 <code>oid</code> 类型。对于包含使用 <code>WITH OIDS</code> 创建的列的表，其相关操作需要作出调整。</p>\n<p>以前带有隐藏 <code>oid</code> 列的系统目录，现在改为具有普通的 <code>oid</code> 列。因此，<code>SELECT *</code> 现在会输出这些列，而以前只有显式选择时才会显示它们。</p>", "text": "移除 oid 列的特殊行为（Andres Freund，John Naylor）§ 以前，可以在建表时使用 WITH OIDS 指定一个通常不可见的 oid 列；此功能已被移除。仍可将列显式声明为 oid 类型。对于包含使用 WITH OIDS 创建的列的表，其相关操作需要作出调整。 以前带有隐藏 oid 列的系统目录，现在改为具有普通的 oid 列。因此，SELECT * 现在会输出这些列，而以前只有显式选择时才会显示它们。", "title": "移除 oid 列的特殊行为", "commits": ["578b22971"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "d885c7f2f761579d697ddeeda1215c49d2a08b33cc6b4612d9aa7807a758c675", "section_path": ["兼容性"], "commit_groups": [["578b22971"]], "identity_text": "Remove the special behavior of oid columns (Andres Freund, John Naylor) Previously, a normally-invisible oid column could be specified during table creation using WITH OIDS; that ability has been removed. Columns can still be explicitly declared as type oid. Operations on tables that have columns created using WITH OIDS will need adjustment. The system catalogs that previously had hidden oid columns now have ordinary oid columns. Hence, SELECT * will now output those columns, whereas previously they would be displayed only if selected explicitly.", "commit_aliases": ["578b22971"], "source_commits": ["578b22971"], "source_entry_id": "12.0/migration/001", "db_id": "86c829ebf46113377e02d2f066c9a2bc", "patch_ids": ["62f653cedb047b3630b5b981b7b2e34d"], "statement_hash": "9f41780074672a9eaddc69a25fff728cae10ec9d03f1a9693c2192d9c3b03e30", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-4174a02156f3d149", "cves": [], "html": "<p>移除数据类型 <code>abstime</code>、<code>reltime</code> 和 <code>tinterval</code>（Andres Freund）<a href=\"https://postgr.es/c/cda6a8d01\">§</a></p>\n<p>这些类型已被 <code>timestamp</code> 等 SQL 标准类型取代。</p>", "text": "移除数据类型 abstime、reltime 和 tinterval（Andres Freund）§ 这些类型已被 timestamp 等 SQL 标准类型取代。", "title": "移除数据类型 abstime、reltime 和 tinterval", "commits": ["cda6a8d01"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "91f48b15f729cd636b9be8a855751feea0f8e0c5a54c8cb68013b1cf1599eae0", "section_path": ["兼容性"], "commit_groups": [["cda6a8d01"]], "identity_text": "Remove data types abstime, reltime, and tinterval (Andres Freund) These are obsoleted by SQL-standard types such as timestamp.", "commit_aliases": ["cda6a8d01"], "source_commits": ["cda6a8d01"], "source_entry_id": "12.0/migration/002", "db_id": "4a8ea153ee93838ba3420a13ea6a1041", "patch_ids": ["98117a27e3960f88a0b9376067cf43a1"], "statement_hash": "28d9e88c28e29e8d995afe32443d49cf365508c2ce12f88ff4988cf9a823440a", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-eade940789a68f86", "cves": [], "html": "<p>移除 <code>timetravel</code> 扩展（Andres Freund）<a href=\"https://postgr.es/c/2d10defa7\">§</a></p>", "text": "移除 timetravel 扩展（Andres Freund）§", "title": "移除 timetravel 扩展", "commits": ["2d10defa7"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "9589d629e73d43a4541e23b7fbd8dabbcf6ba56c09ba6ac2ca7f06d0723ff133", "section_path": ["兼容性"], "commit_groups": [["2d10defa7"]], "identity_text": "Remove the timetravel extension (Andres Freund)", "commit_aliases": ["2d10defa7"], "source_commits": ["2d10defa7"], "source_entry_id": "12.0/migration/003", "db_id": "e4044b5877fc0edf00eeabbfd6d84ae7", "patch_ids": ["f4cba750b334d547952da9615d68cadf"], "statement_hash": "762e827938fe6af07f67ddbbf3392d32312ece27df9140aec44e285d7ec00738", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-ad7ab326d195305c", "cves": [], "html": "<p>将 <code>recovery.conf</code> 设置移入 <a href=\"/docs/12/runtime-config-wal.html#RUNTIME-CONFIG-WAL-ARCHIVE-RECOVERY\" title=\"19.5.4. 归档恢复\"><code>postgresql.conf</code></a>（Masao Fujii，Simon Riggs，Abhijit Menon-Sen，Sergei Kornilov）<a href=\"https://postgr.es/c/2dedf4d9a\">§</a></p>\n<p>不再使用 <code>recovery.conf</code>，如果该文件存在，服务器将无法启动。现在通过 <a href=\"/docs/12/runtime-config-wal.html#RUNTIME-CONFIG-WAL-ARCHIVE-RECOVERY\" title=\"19.5.4. 归档恢复\">recovery.signal</a> 和 <code>standby.signal</code> 文件切换到非主库模式。<code>trigger_file</code> 设置已重命名为<a href=\"/docs/12/runtime-config-replication.html#GUC-PROMOTE-TRIGGER-FILE\">promote_trigger_file</a>。<code>standby_mode</code> 设置已被移除。</p>", "text": "将 recovery.conf 设置移入 postgresql.conf（Masao Fujii，Simon Riggs，Abhijit Menon-Sen，Sergei Kornilov）§ 不再使用 recovery.conf，如果该文件存在，服务器将无法启动。现在通过 recovery.signal 和 standby.signal 文件切换到非主库模式。trigger_file 设置已重命名为promote_trigger_file。standby_mode 设置已被移除。", "title": "将 recovery.conf 设置移入 postgresql.conf", "commits": ["2dedf4d9a"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "d994a89e801ddd8b5fea9f19c9cd9a124cea18f7d945046bb3b70fe57d97969c", "section_path": ["兼容性"], "commit_groups": [["2dedf4d9a"]], "identity_text": "Move recovery.conf settings into postgresql.conf (Masao Fujii, Simon Riggs, Abhijit Menon-Sen, Sergei Kornilov) recovery.conf is no longer used, and the server will not start if that file exists. recovery.signal and standby.signal files are now used to switch into non-primary mode. The trigger_file setting has been renamed to guc-promote-trigger-file . The standby_mode setting has been removed.", "commit_aliases": ["2dedf4d9a"], "source_commits": ["2dedf4d9a"], "source_entry_id": "12.0/migration/004", "db_id": "268bbb07fedcd3adaf551feca6d32b19", "patch_ids": ["2a085e19ed64d55d8771f66b3a15c3ef"], "statement_hash": "350f2a5e68593a4c5c60852b553bc32ebf557f91176567ace3250da11de11bad", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-0d313d7d81a8ac70", "cves": [], "html": "<p>不再允许指定多个相互冲突的 <a href=\"/docs/12/runtime-config-wal.html#RUNTIME-CONFIG-WAL-RECOVERY-TARGET\" title=\"19.5.5. 恢复目标\"><code>recovery_target</code>*</a> 设置（Peter Eisentraut）<a href=\"https://postgr.es/c/f2cbffc7a\">§</a></p>\n<p>具体而言，<a href=\"/docs/12/runtime-config-wal.html#GUC-RECOVERY-TARGET\">recovery_target</a>、<a href=\"/docs/12/runtime-config-wal.html#GUC-RECOVERY-TARGET-LSN\">recovery_target_lsn</a>、<a href=\"/docs/12/runtime-config-wal.html#GUC-RECOVERY-TARGET-NAME\">recovery_target_name</a>、<a href=\"/docs/12/runtime-config-wal.html#GUC-RECOVERY-TARGET-TIME\">recovery_target_time</a>和<a href=\"/docs/12/runtime-config-wal.html#GUC-RECOVERY-TARGET-XID\">recovery_target_xid</a>中只允许指定一个。以前可以指定这些参数中的多个不同参数，并采用最后一个。现在只能指定其中一个，但同一个参数可以重复指定，并采用最后一次指定的值。</p>", "text": "不再允许指定多个相互冲突的 recovery_target* 设置（Peter Eisentraut）§ 具体而言，recovery_target、recovery_target_lsn、recovery_target_name、recovery_target_time和recovery_target_xid中只允许指定一个。以前可以指定这些参数中的多个不同参数，并采用最后一个。现在只能指定其中一个，但同一个参数可以重复指定，并采用最后一次指定的值。", "title": "不再允许指定多个相互冲突的 recovery_target* 设置", "commits": ["f2cbffc7a"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "fad2d6a2ad9f324e20ef3ac8d91c870684fee613526ec2ced1a845c19a3db4e5", "section_path": ["兼容性"], "commit_groups": [["f2cbffc7a"]], "identity_text": "Do not allow multiple conflicting recovery_target* specifications (Peter Eisentraut) Specifically, only allow one of guc-recovery-target , guc-recovery-target-lsn , guc-recovery-target-name , guc-recovery-target-time , and guc-recovery-target-xid . Previously, multiple different instances of these parameters could be specified, and the last one was honored. Now, only one can be specified, though the same one can be specified multiple times and the last specification is honored.", "commit_aliases": ["f2cbffc7a"], "source_commits": ["f2cbffc7a"], "source_entry_id": "12.0/migration/005", "db_id": "86c144405f8c41cd8b0a9caca14a0400", "patch_ids": ["9b1295b2da67a371becbd16e0536209e"], "statement_hash": "44d748fa1ce3e82a41012868460e0f33f0e495a9a6ba707671a4969841b3f51f", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-7958e5d19551bf1a", "cves": [], "html": "<p>使恢复默认推进到最新时间线（Peter Eisentraut）<a href=\"https://postgr.es/c/0acb3bc33\">§</a></p>\n<p>具体而言，<a href=\"/docs/12/runtime-config-wal.html#GUC-RECOVERY-TARGET-TIMELINE\">recovery_target_timeline</a>现在默认为 <code>latest</code>，而以前默认为 <code>current</code>。</p>", "text": "使恢复默认推进到最新时间线（Peter Eisentraut）§ 具体而言，recovery_target_timeline现在默认为 latest，而以前默认为 current。", "title": "使恢复默认推进到最新时间线", "commits": ["0acb3bc33"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "6774794a02a160d06d9ccbaf1e17d64d6bcde2f4169032f6bba63024df01862b", "section_path": ["兼容性"], "commit_groups": [["0acb3bc33"]], "identity_text": "Cause recovery to advance to the latest timeline by default (Peter Eisentraut) Specifically, guc-recovery-target-timeline now defaults to latest. Previously, it defaulted to current.", "commit_aliases": ["0acb3bc33"], "source_commits": ["0acb3bc33"], "source_entry_id": "12.0/migration/006", "db_id": "87b55669e87debc273d32594f0ff0a52", "patch_ids": ["656e1151b9a9c46c453ea08e55522e84"], "statement_hash": "f1aa2b4792c3453a80138f6928659f0adc302dc2854f5b5ebd5801993462f1d1", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-fafce29314664030", "cves": [], "html": "<p>重构<a href=\"/docs/12/functions-geometry.html\" title=\"9.11. 几何函数和操作符\">几何函数和操作符</a>的代码（Emre Hasegeli）<a href=\"https://postgr.es/c/a7dc63d90\">§</a> <a href=\"https://postgr.es/c/c4c340088\">§</a> <a href=\"https://postgr.es/c/2e2a392de\">§</a></p>\n<p>这可能产生比以前版本更精确但略有不同的结果。特别是，涉及 NaN、下溢、溢出和除以零的情况现在得到比以前更一致的处理。</p>", "text": "重构几何函数和操作符的代码（Emre Hasegeli）§ § § 这可能产生比以前版本更精确但略有不同的结果。特别是，涉及 NaN、下溢、溢出和除以零的情况现在得到比以前更一致的处理。", "title": "重构几何函数和操作符的代码", "commits": ["2e2a392de", "a7dc63d90", "c4c340088"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "b1ca0eae846b8380319be35e6655c93e12bf0475cf7c27685404868c7b23d78a", "section_path": ["兼容性"], "commit_groups": [["2e2a392de"], ["a7dc63d90"], ["c4c340088"]], "identity_text": "Refactor code for geometric functions and operators (Emre Hasegeli) This could lead to more accurate, but slightly different, results compared to previous releases. Notably, cases involving NaN, underflow, overflow, and division by zero are handled more consistently than before.", "commit_aliases": ["2e2a392de", "a7dc63d90", "c4c340088"], "source_commits": ["2e2a392de", "a7dc63d90", "c4c340088"], "source_entry_id": "12.0/migration/007", "db_id": "01d2a7a76e1c8c7e81512a30209a2adc", "patch_ids": ["4b08607cab81347ded8c176477ecd212", "7e4cc49893c3728a5da3858fa7cbe3a0", "f9735f476c008bf5007f44787426e3c8"], "statement_hash": "620f296b2f6a12b9a7fc195445bc003cb0098deefbafe17084a073eb9f58f0b6", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-52ca837d7c13aad9", "cves": [], "html": "<p>采用新算法输出 <a href=\"/docs/12/datatype.html#DATATYPE-FLOAT\" title=\"8.1.3. 浮点类型\"><code>real</code></a> 和 <code>double precision</code> 值，以提高性能（Andrew Gierth）<a href=\"https://postgr.es/c/02ddd4993\">§</a> <a href=\"https://postgr.es/c/f1885386f\">§</a></p>\n<p>以前，显示的浮点值默认舍入到 6 位（<code>real</code>）或 15 位（<code>double precision</code>），并根据<a href=\"/docs/12/runtime-config-client.html#GUC-EXTRA-FLOAT-DIGITS\">extra_float_digits</a>的值进行调整。现在，只要 <code>extra_float_digits</code> 大于零（这也是现在的默认值），就只输出保留精确二进制值所需的最少位数。当 <code>extra_float_digits</code> 设置为零或更小时，行为与以前相同。</p>\n<p>此外，浮点指数的格式现在在各平台上一致：除非必须使用三位数字，否则使用两位。在以前的版本中，Windows 构建始终输出三位数字。</p>", "text": "采用新算法输出 real 和 double precision 值，以提高性能（Andrew Gierth）§ § 以前，显示的浮点值默认舍入到 6 位（real）或 15 位（double precision），并根据extra_float_digits的值进行调整。现在，只要 extra_float_digits 大于零（这也是现在的默认值），就只输出保留精确二进制值所需的最少位数。当 extra_float_digits 设置为零或更小时，行为与以前相同。 此外，浮点指数的格式现在在各平台上一致：除非必须使用三位数字，否则使用两位。在以前的版本中，Windows 构建始终输出三位数字。", "title": "采用新算法输出 real 和 double precision 值，以提高性能", "commits": ["02ddd4993", "f1885386f"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "dab0a1b0cc48b9a5bf410d249a5497f93e9bef45faacf7f49e44fd9b222ab196", "section_path": ["兼容性"], "commit_groups": [["02ddd4993"], ["f1885386f"]], "identity_text": "Improve performance by using a new algorithm for output of real and double precision values (Andrew Gierth) Previously, displayed floating-point values were rounded to 6 (for real) or 15 (for double precision) digits by default, adjusted by the value of guc-extra-float-digits . Now, whenever extra_float_digits is more than zero (as it now is by default), only the minimum number of digits required to preserve the exact binary value are output. The behavior is the same as before when extra_float_digits is set to zero or less. Also, formatting of floating-point exponents is now uniform across platforms: two digits are used unless three are necessary. In previous releases, Windows builds always printed three digits.", "commit_aliases": ["02ddd4993", "f1885386f"], "source_commits": ["02ddd4993", "f1885386f"], "source_entry_id": "12.0/migration/008", "db_id": "bfbe67b81c03b40560f30245ff680049", "patch_ids": ["4c6aa50270eed3114a78085b39bc9f31", "7e14126e5c64583e0fabbeac1ac3d4f5"], "statement_hash": "e78a41ca94a6779e9557c0c1add6dffda635aad95aac66bb84ba32c46664500c", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-eacf18ab586153a7", "cves": [], "html": "<p><a href=\"/docs/12/functions-math.html#FUNCTIONS-MATH-RANDOM-TABLE\" title=\"表 9.6. 随机函数\"><code>random()</code></a> 和 <code>setseed()</code> 现在在各平台上行为一致（Tom Lane）<a href=\"https://postgr.es/c/6645ad6bd\">§</a> <a href=\"https://postgr.es/c/4203842a1\">§</a></p>\n<p>使用特定种子值调用 <code>setseed()</code> 后生成的 <code>random()</code> 值序列，现在可能与以前不同。不过，该序列也将是可重复的；以前由于服务器内部其他随机数用途的干扰，无法保证这一点。SQL <code>random()</code> 函数现在具有每个会话独立的私有状态，以防止这种干扰。</p>", "text": "random() 和 setseed() 现在在各平台上行为一致（Tom Lane）§ § 使用特定种子值调用 setseed() 后生成的 random() 值序列，现在可能与以前不同。不过，该序列也将是可重复的；以前由于服务器内部其他随机数用途的干扰，无法保证这一点。SQL random() 函数现在具有每个会话独立的私有状态，以防止这种干扰。", "title": "random() 和 setseed() 现在在各平台上行为一致", "commits": ["4203842a1", "6645ad6bd"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "1ca8358d0d50435682ed3185971962b543181d7e0a048dfb1695aad6f8b48f84", "section_path": ["兼容性"], "commit_groups": [["4203842a1"], ["6645ad6bd"]], "identity_text": "random() and setseed() now behave uniformly across platforms (Tom Lane) The sequence of random() values generated following a setseed() call with a particular seed value is likely to be different now than before. However, it will also be repeatable, which was not previously guaranteed because of interference from other uses of random numbers inside the server. The SQL random() function now has its own private per-session state to forestall that.", "commit_aliases": ["4203842a1", "6645ad6bd"], "source_commits": ["4203842a1", "6645ad6bd"], "source_entry_id": "12.0/migration/009", "db_id": "e08eaa052f3497367bf4acc3b896fb88", "patch_ids": ["4885a23732ca5cab89335bef8aab044b", "cae0fae702e4cd2288f289e0a928ab18"], "statement_hash": "ea576a0171070b3d823702d725dab1a106662db17c940f53a0c21d005eb075cb", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-22d94d76d1c6dd97", "cves": [], "html": "<p>更改 SQL 风格的 <a href=\"/docs/12/functions-matching.html#FUNCTIONS-SIMILARTO-REGEXP\" title=\"9.7.2. SIMILAR TO正则表达式\"><code>substring()</code></a>，使其具有符合标准的贪婪匹配行为（Tom Lane）<a href=\"https://postgr.es/c/7c850320d\">§</a></p>\n<p>当模式可以以多种方式匹配时，起始子模式现在会匹配尽可能少的文本，而非尽可能多的文本。例如，<code>%#\"aa*#\"%</code> 这样的模式现在会从输入中选择第一组 <code>a</code>，而非最后一组。</p>", "text": "更改 SQL 风格的 substring()，使其具有符合标准的贪婪匹配行为（Tom Lane）§ 当模式可以以多种方式匹配时，起始子模式现在会匹配尽可能少的文本，而非尽可能多的文本。例如，%#\"aa*#\"% 这样的模式现在会从输入中选择第一组 a，而非最后一组。", "title": "更改 SQL 风格的 substring()，使其具有符合标准的贪婪匹配行为", "commits": ["7c850320d"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "166d4b8609ec7405c2352f3529d1dfa8e12b656c5e906a64a120eb7df55ade44", "section_path": ["兼容性"], "commit_groups": [["7c850320d"]], "identity_text": "Change SQL-style substring() to have standard-compliant greediness behavior (Tom Lane) In cases where the pattern can be matched in more than one way, the initial sub-pattern is now treated as matching the least possible amount of text rather than the greatest; for example, a pattern such as %#\"aa*#\"% now selects the first group of a's from the input, not the last group.", "commit_aliases": ["7c850320d"], "source_commits": ["7c850320d"], "source_entry_id": "12.0/migration/010", "db_id": "9c47761c11431bcc93925a9595436f30", "patch_ids": ["fe57f99348960f45008108591531601f"], "statement_hash": "a0c49e77d407b854796dcf81af2571c92861e368c1ea19542853f9d349b5a25d", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-39f003b755289ae3", "cves": [], "html": "<p>不再对 <a href=\"/docs/12/functions-xml.html\" title=\"9.14. XML 函数\"><code>xpath()</code></a> 或 <code>XMLTABLE</code> 结构的结果进行美化输出（Tom Lane）<a href=\"https://postgr.es/c/c06e3550d\">§</a></p>\n<p>在某些情况下，这些函数会在节点集值中插入额外的空白（换行和/或空格）。这并不合适，因为根据具体用途，这些空白可能具有语义意义。</p>", "text": "不再对 xpath() 或 XMLTABLE 结构的结果进行美化输出（Tom Lane）§ 在某些情况下，这些函数会在节点集值中插入额外的空白（换行和/或空格）。这并不合适，因为根据具体用途，这些空白可能具有语义意义。", "title": "不再对 xpath() 或 XMLTABLE 结构的结果进行美化输出", "commits": ["c06e3550d"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "f85a1ea6bc54cf5412cc6e62a23ccd9db784544dc53576ba91420aa04bdbb45d", "section_path": ["兼容性"], "commit_groups": [["c06e3550d"]], "identity_text": "Do not pretty-print the result of xpath() or the XMLTABLE construct (Tom Lane) In some cases, these functions would insert extra whitespace (newlines and/or spaces) in nodeset values. This is undesirable since depending on usage, the whitespace might be considered semantically significant.", "commit_aliases": ["c06e3550d"], "source_commits": ["c06e3550d"], "source_entry_id": "12.0/migration/011", "db_id": "8716d023f130c790c8eb92d3ac539ea2", "patch_ids": ["86841fc8e89d64fa796ca0a2224a90fc"], "statement_hash": "ba87e28346ceb127f86f2a36668ff4dfe4567bf84d196ed06a16fc2e85ea9e89", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-f0852cf31947cb08", "cves": [], "html": "<p>将命令行工具 <span>pg_verify_checksums</span> 重命名为<a href=\"/docs/12/app-pgchecksums.html\" title=\"pg_checksums\"><span><span>pg_checksums</span></span></a>（Michaël Paquier）<a href=\"https://postgr.es/c/6dd263cfa\">§</a></p>", "text": "将命令行工具 pg_verify_checksums 重命名为pg_checksums（Michaël Paquier）§", "title": "将命令行工具 pg_verify_checksums 重命名为pg_checksums", "commits": ["6dd263cfa"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "a2f33e3193d08a422f462163c6c3a5c6fa9c0a7e3a1cd6df65e7f70d86771bb9", "section_path": ["兼容性"], "commit_groups": [["6dd263cfa"]], "identity_text": "Rename command-line tool pg_verify_checksums to app-pgchecksums (Michaël Paquier)", "commit_aliases": ["6dd263cfa"], "source_commits": ["6dd263cfa"], "source_entry_id": "12.0/migration/012", "db_id": "15b78f9b2e86ec480cb59f59cdb2884c", "patch_ids": ["3d81f3bdd33615533411e7a33aec69ff"], "statement_hash": "6f52efc19efbc75d23ffa67a5f64724f2c1f9c9ef7ff08716f1c3be7bb28605b", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-fee9dbd95d921244", "cves": [], "html": "<p>在<a href=\"/docs/12/app-pgrestore.html\" title=\"pg_restore\"><span>pg_restore</span></a>中，要求指定 <code>-f -</code> 才能将转储内容发送到标准输出（Euler Taveira）<a href=\"https://postgr.es/c/413ccaa74\">§</a></p>\n<p>以前，如果未指定目标位置，默认会这样做，但这种行为被认为不够友好。</p>", "text": "在pg_restore中，要求指定 -f - 才能将转储内容发送到标准输出（Euler Taveira）§ 以前，如果未指定目标位置，默认会这样做，但这种行为被认为不够友好。", "title": "在pg_restore中，要求指定 -f - 才能将转储内容发送到标准输出", "commits": ["413ccaa74"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "588bd80793977eca8da5f1b7c2b62f4d763b95055428bbc0b1d41e3832b33677", "section_path": ["兼容性"], "commit_groups": [["413ccaa74"]], "identity_text": "In app-pgrestore , require specification of -f - to send the dump contents to standard output (Euler Taveira) Previously, this happened by default if no destination was specified, but that was deemed to be unfriendly.", "commit_aliases": ["413ccaa74"], "source_commits": ["413ccaa74"], "source_entry_id": "12.0/migration/013", "db_id": "76ec4d4b6d7ddc35f24914ca4317c35e", "patch_ids": ["a3b8c238e373d06d74534a0a9bcfb350"], "statement_hash": "db990fbc25e557db13bf91492fc43ba521a7dd3ddb098cbd75ba716ca953d04a", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-bf14302696d38d09", "cves": [], "html": "<p>在 <span>psql</span> 的 <code>\\pset format</code> 命令中禁止不唯一的缩写（Daniel Vérité）<a href=\"https://postgr.es/c/eaf746a5b\">§</a> <a href=\"https://postgr.es/c/a7eece4fc\">§</a></p>\n<p>例如，以前 <code>\\pset format a</code> 会选择 <code>aligned</code>；现在它会失败，因为这也可能表示 <code>asciidoc</code>。</p>", "text": "在 psql 的 \\pset format 命令中禁止不唯一的缩写（Daniel Vérité）§ § 例如，以前 \\pset format a 会选择 aligned；现在它会失败，因为这也可能表示 asciidoc。", "title": "在 psql 的 \\pset format 命令中禁止不唯一的缩写", "commits": ["a7eece4fc", "eaf746a5b"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "88ebae0dac19ce2da4017c49c54b50d613371acaa644bcd09c54c7bcbecf90a6", "section_path": ["兼容性"], "commit_groups": [["a7eece4fc"], ["eaf746a5b"]], "identity_text": "Disallow non-unique abbreviations in psql's \\pset format command (Daniel Vérité) Previously, for example, \\pset format a chose aligned; it will now fail since that could equally well mean asciidoc.", "commit_aliases": ["a7eece4fc", "eaf746a5b"], "source_commits": ["a7eece4fc", "eaf746a5b"], "source_entry_id": "12.0/migration/014", "db_id": "c7fd52b912dcdbe7ac3f990fae91184b", "patch_ids": ["d71a90ef8229c00013f21e657e7f52c0", "d9335dd0fc16f83894c5bf5db1fd5910"], "statement_hash": "b19a375a15647aa3192654938ed915b9b45e1032ee6713d4cfecdd6e3b44d29e", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-a316fc9b14a3be83", "cves": [], "html": "<p>在新建的 B-树索引中，将索引条目的最大长度减少八字节，以改进对重复条目的处理（Peter Geoghegan）<a href=\"https://postgr.es/c/dd299df81\">§</a></p>\n<p>这意味着，对通过 <span>pg_upgrade</span> 从以前版本升级而来的索引执行<a href=\"/docs/12/sql-reindex.html\" title=\"REINDEX\"><span>REINDEX</span></a>操作时，可能会失败。</p>", "text": "在新建的 B-树索引中，将索引条目的最大长度减少八字节，以改进对重复条目的处理（Peter Geoghegan）§ 这意味着，对通过 pg_upgrade 从以前版本升级而来的索引执行REINDEX操作时，可能会失败。", "title": "在新建的 B-树索引中，将索引条目的最大长度减少八字节，以改进对重复条目的处理", "commits": ["dd299df81"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "56b3b4590cec7cbffd38c20164be5705411ce92bdb773b31eabcb4e9c5abd016", "section_path": ["兼容性"], "commit_groups": [["dd299df81"]], "identity_text": "In new btree indexes, the maximum index entry length is reduced by eight bytes, to improve handling of duplicate entries (Peter Geoghegan) This means that a sql-reindex operation on an index pg_upgrade'd from a previous release could potentially fail.", "commit_aliases": ["dd299df81"], "source_commits": ["dd299df81"], "source_entry_id": "12.0/migration/015", "db_id": "77c2078559927cb4722625ff14b67cfd", "patch_ids": ["a43ca6400105f4870998ecb53a5cd53b"], "statement_hash": "b4c594071658d7c9fac0f2e3a788138a8a2256d3f93632c720090c586d203c8d", "relations": [{"rule": 2, "type": "related", "target": "aad8107f07f86f1bde08c4fc057e36e3", "evidence": {"same_day": true, "patch_ids": ["a43ca6400105f4870998ecb53a5cd53b"]}}], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": [{"db_id": "aad8107f07f86f1bde08c4fc057e36e3", "kind": "related", "version": "12.0", "label": "12.0", "title": "提高具有大量重复值的 B-树索引的性能和空间利用率", "evidence": {"same_day": true, "patch_ids": ["a43ca6400105f4870998ecb53a5cd53b"]}, "url": "/docs/compare/?release=12.0#12.0-9987a84ca00e9d8b", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3"}]}, {"id": "12.0-fdf6fa70e9bf908d", "cves": [], "html": "<p>如果没有提供参数列表且存在多个匹配对象，则使 <a href=\"/docs/12/sql-dropfunction.html\" title=\"DROP FUNCTION\"><code>DROP IF EXISTS FUNCTION</code></a>/<code>PROCEDURE</code>/<code>AGGREGATE</code>/<code>ROUTINE</code> 报错（David Rowley）<a href=\"https://postgr.es/c/bfb456c1b\">§</a></p>\n<p>同时改进此类情况下的错误消息。</p>", "text": "如果没有提供参数列表且存在多个匹配对象，则使 DROP IF EXISTS FUNCTION/PROCEDURE/AGGREGATE/ROUTINE 报错（David Rowley）§ 同时改进此类情况下的错误消息。", "title": "如果没有提供参数列表且存在多个匹配对象，则使 DROP IF EXISTS FUNCTION/PROCEDURE/AGGREGATE/ROUTINE 报错", "commits": ["bfb456c1b"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "ab9230b5836eaad5e3ee9ede05ef657febe94de0965eb4c94bff5ee9a9a7eab3", "section_path": ["兼容性"], "commit_groups": [["bfb456c1b"]], "identity_text": "Cause DROP IF EXISTS FUNCTION/PROCEDURE/AGGREGATE/ROUTINE to generate an error if no argument list is supplied and there are multiple matching objects (David Rowley) Also improve the error message in such cases.", "commit_aliases": ["bfb456c1b"], "source_commits": ["bfb456c1b"], "source_entry_id": "12.0/migration/016", "db_id": "0235c27f5f6234d0ddc2f3943fe28903", "patch_ids": ["3ab14ad146dfca49718dd441c433ca90"], "statement_hash": "d9a13f536419bce12dcebcec26bdb174dd54ac99e8a88ea08c2e706fa9636b9f", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-5eda978cc5761799", "cves": [], "html": "<p>将 <a href=\"/docs/12/catalog-pg-statistic-ext.html\" title=\"51.51. pg_statistic_ext\"><code>pg_statistic_ext</code></a> 目录拆分为两个目录，并添加相应的 <a href=\"/docs/12/view-pg-stats-ext.html\" title=\"51.89. pg_stats_ext\"><code>pg_stats_ext</code></a> 视图（Dean Rasheed，Tomas Vondra）<a href=\"https://postgr.es/c/6cbfb784c\">§</a> <a href=\"https://postgr.es/c/aa087ec64\">§</a></p>\n<p>此更改支持向无特权用户隐藏可能敏感的统计数据。</p>", "text": "将 pg_statistic_ext 目录拆分为两个目录，并添加相应的 pg_stats_ext 视图（Dean Rasheed，Tomas Vondra）§ § 此更改支持向无特权用户隐藏可能敏感的统计数据。", "title": "将 pg_statistic_ext 目录拆分为两个目录，并添加相应的 pg_stats_ext 视图", "commits": ["6cbfb784c", "aa087ec64"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "24953cdc97926cab02809e0d9cbccbc620a01980ad29e92b026aaf2fb32c1a79", "section_path": ["兼容性"], "commit_groups": [["6cbfb784c"], ["aa087ec64"]], "identity_text": "Split the pg_statistic_ext catalog into two catalogs, and add the pg_stats_ext view of it (Dean Rasheed, Tomas Vondra) This change supports hiding potentially-sensitive statistics data from unprivileged users.", "commit_aliases": ["6cbfb784c", "aa087ec64"], "source_commits": ["6cbfb784c", "aa087ec64"], "source_entry_id": "12.0/migration/017", "db_id": "2c459fa6fb9d0b0257d58e699a5cb1d8", "patch_ids": ["3d504a760f99aa341951c42126673643", "4b39c020512cd33481dd3ddc8ee9ebc9"], "statement_hash": "010ea0b44f70c3142a933ff4c0414153b2bfee01435909ec5a1105fc274c2e18", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-d00c4bd3641fd1a2", "cves": [], "html": "<p>移除过时的 <a href=\"/docs/12/catalog-pg-constraint.html\" title=\"51.13. pg_constraint\"><code>pg_constraint</code></a>.<code>consrc</code> 列（Peter Eisentraut）<a href=\"https://postgr.es/c/96b00c433\">§</a></p>\n<p>此列早已弃用，因为它不会随其他目录变更（如列重命名）而更新。从 <code>pg_constraint</code> 获取检查约束表达式文本形式的推荐方法是 <code>pg_get_expr(conbin, conrelid)</code>。<code>pg_get_constraintdef()</code> 也是一种有用的替代方法。</p>", "text": "移除过时的 pg_constraint.consrc 列（Peter Eisentraut）§ 此列早已弃用，因为它不会随其他目录变更（如列重命名）而更新。从 pg_constraint 获取检查约束表达式文本形式的推荐方法是 pg_get_expr(conbin, conrelid)。pg_get_constraintdef() 也是一种有用的替代方法。", "title": "移除过时的 pg_constraint.consrc 列", "commits": ["96b00c433"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "83e36a8fa1d611d80b4c44b16e30149554d14ebfe7f4afb75f6b1cbf75e9c184", "section_path": ["兼容性"], "commit_groups": [["96b00c433"]], "identity_text": "Remove obsolete pg_constraint.consrc column (Peter Eisentraut) This column has been deprecated for a long time, because it did not update in response to other catalog changes (such as column renamings). The recommended way to get a text version of a check constraint's expression from pg_constraint is pg_get_expr(conbin, conrelid). pg_get_constraintdef() is also a useful alternative.", "commit_aliases": ["96b00c433"], "source_commits": ["96b00c433"], "source_entry_id": "12.0/migration/018", "db_id": "540dcd929ed575145cdd3dfa85403d25", "patch_ids": ["8f43a7001865cf5cffdde3c0857978a7"], "statement_hash": "48fbc2ddb66cfb26a96d537444b8916f752f6abeeb930c27d117b3cffe615bb5", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-e788a0d7330d08d1", "cves": [], "html": "<p>移除过时的 <a href=\"/docs/12/catalog-pg-attrdef.html\" title=\"51.6. pg_attrdef\"><code>pg_attrdef</code></a>.<code>adsrc</code> 列（Peter Eisentraut）<a href=\"https://postgr.es/c/fe5038236\">§</a></p>\n<p>此列早已弃用，因为它不会随其他目录变更（如列重命名）而更新。从 <code>pg_attrdef</code> 获取默认值表达式文本形式的推荐方法是 <code>pg_get_expr(adbin, adrelid)</code>。</p>", "text": "移除过时的 pg_attrdef.adsrc 列（Peter Eisentraut）§ 此列早已弃用，因为它不会随其他目录变更（如列重命名）而更新。从 pg_attrdef 获取默认值表达式文本形式的推荐方法是 pg_get_expr(adbin, adrelid)。", "title": "移除过时的 pg_attrdef.adsrc 列", "commits": ["fe5038236"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "6d0905e2b83d60619fc7fe5065068889c4c20833e918d0735515fe5c0ffb7971", "section_path": ["兼容性"], "commit_groups": [["fe5038236"]], "identity_text": "Remove obsolete pg_attrdef.adsrc column (Peter Eisentraut) This column has been deprecated for a long time, because it did not update in response to other catalog changes (such as column renamings). The recommended way to get a text version of a default-value expression from pg_attrdef is pg_get_expr(adbin, adrelid).", "commit_aliases": ["fe5038236"], "source_commits": ["fe5038236"], "source_entry_id": "12.0/migration/019", "db_id": "9113dd6228c06fa43c75cb0a8c39f73f", "patch_ids": ["662f006b784d370929b58b1648ec6931"], "statement_hash": "bf48f0d3f5eb232dd469c753862b8d6efcf03e3a1ddc234edbb666dcca4ff385", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-3f99413fea74ee44", "cves": [], "html": "<p>将 <a href=\"/docs/12/datatype-character.html#DATATYPE-CHARACTER-SPECIAL-TABLE\" title=\"表 8.5. 特殊字符类型\">name</a> 类型的表列标记为默认使用 <span>“<span>C</span>”</span> 排序规则（Tom Lane，Daniel Vérité）<a href=\"https://postgr.es/c/586b98fdf\">§</a> <a href=\"https://postgr.es/c/478cacb50\">§</a></p>\n<p>数据类型 <code>name</code> 的比较操作符现在可以使用任何排序规则，而不再总是使用 <span>“<span>C</span>”</span> 排序规则。为保留查询以前的语义，现在将 <code>name</code> 类型的列显式标记为使用 <span>“<span>C</span>”</span> 排序规则。这一改动的副作用是，<code>name</code> 列上的正则表达式操作符现在默认使用 <span>“<span>C</span>”</span> 排序规则，而非数据库的排序规则，来确定依赖区域设置的正则表达式模式（例如 <code>\\w</code>）的行为。如果希望 <code>name</code> 列上的正则表达式具有非 C 行为，请附加一个显式的 <code>COLLATE</code> 子句。（对于用户定义的 <code>name</code> 列，另一种方法是在建表时指定不同的排序规则；但这只是将向后不兼容性转移到了比较操作符上。）</p>", "text": "将 name 类型的表列标记为默认使用 “C” 排序规则（Tom Lane，Daniel Vérité）§ § 数据类型 name 的比较操作符现在可以使用任何排序规则，而不再总是使用 “C” 排序规则。为保留查询以前的语义，现在将 name 类型的列显式标记为使用 “C” 排序规则。这一改动的副作用是，name 列上的正则表达式操作符现在默认使用 “C” 排序规则，而非数据库的排序规则，来确定依赖区域设置的正则表达式模式（例如 \\w）的行为。如果希望 name 列上的正则表达式具有非 C 行为，请附加一个显式的 COLLATE 子句。（对于用户定义的 name 列，另一种方法是在建表时指定不同的排序规则；但这只是将向后不兼容性转移到了比较操作符上。）", "title": "将 name 类型的表列标记为默认使用 “C” 排序规则", "commits": ["478cacb50", "586b98fdf"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "4f6a63b5108ef2afd68f8da8f80d8f001854f8d8d0086b41dd08e63e3ccf1e2b", "section_path": ["兼容性"], "commit_groups": [["478cacb50"], ["586b98fdf"]], "identity_text": "Mark table columns of type name as having C collation by default (Tom Lane, Daniel Vérité) The comparison operators for data type name can now use any collation, rather than always using C collation. To preserve the previous semantics of queries, columns of type name are now explicitly marked as having C collation. A side effect of this is that regular-expression operators on name columns will now use the C collation by default, not the database collation, to determine the behavior of locale-dependent regular expression patterns (such as \\w). If you want non-C behavior for a regular expression on a name column, attach an explicit COLLATE clause. (For user-defined name columns, another possibility is to specify a different collation at table creation time; but that just moves the non-backwards-compatibility to the comparison operators.)", "commit_aliases": ["478cacb50", "586b98fdf"], "source_commits": ["478cacb50", "586b98fdf"], "source_entry_id": "12.0/migration/020", "db_id": "658e94932e4f1df8c9757551ca1f8f58", "patch_ids": ["a6c0e302cd9ca15ba56f4271ba6cf754", "c51efcc59cc6e3d8f7f1f4d62187e0cc"], "statement_hash": "b60fbe3a8b0b66c9884aca42743d0d5013d11bc6bce5adf99bfd858acbe7e6b7", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-d1eb915a1ae7f774", "cves": [], "html": "<p>将 <a href=\"/docs/12/information-schema.html\" title=\"第 36 章 信息模式\"><code>information_schema</code></a> 视图中的对象名列视为 <code>name</code> 类型，而非 <code>varchar</code> 类型（Tom Lane）<a href=\"https://postgr.es/c/7c15cef86\">§</a> <a href=\"https://postgr.es/c/5bbee34d9\">§</a> <a href=\"https://postgr.es/c/6b0faf723\">§</a></p>\n<p>按照 SQL 标准，<code>information_schema</code> 视图中的对象名列被声明为域类型 <code>sql_identifier</code>。在 <span>PostgreSQL</span> 中，底层目录列实际为 <code>name</code> 类型。此更改使 <code>sql_identifier</code> 成为基于 <code>name</code> 的域，而非原来的 <code>varchar</code>。这消除了比较和排序行为中的语义不一致，可显著提高对 <code>information_schema</code> 视图中的对象名列施加限制的查询性能。不过请注意，不等式限制，例如</p>\n<pre>SELECT ... FROM information_schema.tables WHERE table_name &lt; 'foo';\n</pre>\n<p>现在默认使用 <span>“<span>C</span>”</span> 区域设置的比较语义，而非像以前那样使用数据库的默认排序规则。对这些列进行排序也将遵循 <span>“<span>C</span>”</span> 排序规则。通过添加 <code>COLLATE \"default\"</code> 子句，可以强制使用以前的行为（及其低效率）。</p>", "text": "将 information_schema 视图中的对象名列视为 name 类型，而非 varchar 类型（Tom Lane）§ § § 按照 SQL 标准，information_schema 视图中的对象名列被声明为域类型 sql_identifier。在 PostgreSQL 中，底层目录列实际为 name 类型。此更改使 sql_identifier 成为基于 name 的域，而非原来的 varchar。这消除了比较和排序行为中的语义不一致，可显著提高对 information_schema 视图中的对象名列施加限制的查询性能。不过请注意，不等式限制，例如 SELECT ... FROM information_schema.tables WHERE table_name < 'foo'; 现在默认使用 “C” 区域设置的比较语义，而非像以前那样使用数据库的默认排序规则。对这些列进行排序也将遵循 “C” 排序规则。通过添加 COLLATE \"default\" 子句，可以强制使用以前的行为（及其低效率）。", "title": "将 information_schema 视图中的对象名列视为 name 类型，而非 varchar 类型", "commits": ["5bbee34d9", "6b0faf723", "7c15cef86"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "7cb033ae1d8ca8510d5bb58a87744b52447f27fb418706e8280be3a55693ba67", "section_path": ["兼容性"], "commit_groups": [["5bbee34d9"], ["6b0faf723"], ["7c15cef86"]], "identity_text": "Treat object-name columns in the information_schema views as being of type name, not varchar (Tom Lane) Per the SQL standard, object-name columns in the information_schema views are declared as being of domain type sql_identifier. In PostgreSQL, the underlying catalog columns are really of type name. This change makes sql_identifier be a domain over name, rather than varchar as before. This eliminates a semantic mismatch in comparison and sorting behavior, which can greatly improve the performance of queries on information_schema views that restrict an object-name column. Note however that inequality restrictions, for example SELECT ... FROM information_schema.tables WHERE table_name < 'foo'; will now use C-locale comparison semantics by default, rather than the database's default collation as before. Sorting on these columns will also follow C ordering rules. The previous behavior (and inefficiency) can be enforced by adding a COLLATE \"default\" clause.", "commit_aliases": ["5bbee34d9", "6b0faf723", "7c15cef86"], "source_commits": ["5bbee34d9", "6b0faf723", "7c15cef86"], "source_entry_id": "12.0/migration/021", "db_id": "ea0cca0df83f59b85c136c6197244eea", "patch_ids": ["389faa0fc4e611f429d029be2114d09e", "6ea305b30fcdb53b75e37438c4128b60", "84d31a7582368b29a2047d53249be003"], "statement_hash": "9ee3910fa20a7382c5d45e080d09c9cd86b0ec0e2ae420f4fd918d24cf9535ac", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-87f6d83c1ef11f11", "cves": [], "html": "<p>移除禁用动态共享内存的功能（Kyotaro Horiguchi）<a href=\"https://postgr.es/c/bcbd94080\">§</a></p>\n<p>具体而言，<a href=\"/docs/12/runtime-config-resource.html#GUC-DYNAMIC-SHARED-MEMORY-TYPE\">dynamic_shared_memory_type</a>不再能够设置为 <code>none</code>。</p>", "text": "移除禁用动态共享内存的功能（Kyotaro Horiguchi）§ 具体而言，dynamic_shared_memory_type不再能够设置为 none。", "title": "移除禁用动态共享内存的功能", "commits": ["bcbd94080"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "39d00563b9539b6cee8f5a19499f3c1559846f37bafa76e5dbec1b092fbce83a", "section_path": ["兼容性"], "commit_groups": [["bcbd94080"]], "identity_text": "Remove the ability to disable dynamic shared memory (Kyotaro Horiguchi) Specifically, guc-dynamic-shared-memory-type can no longer be set to none.", "commit_aliases": ["bcbd94080"], "source_commits": ["bcbd94080"], "source_entry_id": "12.0/migration/022", "db_id": "16b3e784c0f9249ad245a4789c9b3bd8", "patch_ids": ["5290889193fc66b7a8c1772631cd0626"], "statement_hash": "09d6cef5675386e3e0403145ec5a70d1d2889c1162a567c7a15cc0fc0b45c4f1", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-94954ee89347a85d", "cves": [], "html": "<p>更严格地解析 libpq 整数连接参数（Fabien Coelho）<a href=\"https://postgr.es/c/e7a221797\">§</a></p>\n<p>在以前的版本中，为连接参数 <code>connect_timeout</code>、<code>keepalives</code>、<code>keepalives_count</code>、<code>keepalives_idle</code>、<code>keepalives_interval</code> 和 <code>port</code> 使用不正确的整数值，会导致 libpq 忽略这些值，或失败并给出不正确的错误消息。</p>", "text": "更严格地解析 libpq 整数连接参数（Fabien Coelho）§ 在以前的版本中，为连接参数 connect_timeout、keepalives、keepalives_count、keepalives_idle、keepalives_interval 和 port 使用不正确的整数值，会导致 libpq 忽略这些值，或失败并给出不正确的错误消息。", "title": "更严格地解析 libpq 整数连接参数", "commits": ["e7a221797"], "section": "兼容性", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "b9e78eb70645b376f389704fba9dbbd4b6edb41b8058eab59e630177c5d68f25", "section_path": ["兼容性"], "commit_groups": [["e7a221797"]], "identity_text": "Parse libpq integer connection parameters more strictly (Fabien Coelho) In previous releases, using an incorrect integer value for connection parameters connect_timeout, keepalives, keepalives_count, keepalives_idle, keepalives_interval and port resulted in libpq either ignoring those values or failing with incorrect error messages.", "commit_aliases": ["e7a221797"], "source_commits": ["e7a221797"], "source_entry_id": "12.0/migration/023", "db_id": "4c9ccf81c0605378186c0688d99549ac", "patch_ids": ["4a2b44816b81ca636e21b50d5bc46e6f"], "statement_hash": "6f9c35d1e17ec945c0b30682b4fc9c3d97e81cfefc1c6ea1fe735b7fc59c209a", "relations": [], "version": "12.0", "category_label": "兼容性变化", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-65ee43da4c3f8640", "cves": [], "html": "<p>提高分区表上许多操作的性能（Amit Langote，David Rowley，Tom Lane，Álvaro Herrera）<a href=\"https://postgr.es/c/c6e4133fa\">§</a> <a href=\"https://postgr.es/c/34c9e455d\">§</a> <a href=\"https://postgr.es/c/3f2393ede\">§</a> <a href=\"https://postgr.es/c/9eefba181\">§</a> <a href=\"https://postgr.es/c/428b260f8\">§</a></p>\n<p>对于拥有数千个子分区的表，只影响少量分区的操作现在能够高效处理。</p>", "text": "提高分区表上许多操作的性能（Amit Langote，David Rowley，Tom Lane，Álvaro Herrera）§ § § § § 对于拥有数千个子分区的表，只影响少量分区的操作现在能够高效处理。", "title": "提高分区表上许多操作的性能", "commits": ["34c9e455d", "3f2393ede", "428b260f8", "9eefba181", "c6e4133fa"], "section": "服务器 / 分区", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "a030c44a6bda49aa7c10130b1ea630d92d4ccb1693797a3fa5d67c26e30977b2", "section_path": ["服务器", "分区"], "commit_groups": [["34c9e455d"], ["3f2393ede"], ["428b260f8"], ["9eefba181"], ["c6e4133fa"]], "identity_text": "Improve performance of many operations on partitioned tables (Amit Langote, David Rowley, Tom Lane, Álvaro Herrera) Allow tables with thousands of child partitions to be processed efficiently by operations that only affect a small number of partitions.", "commit_aliases": ["34c9e455d", "3f2393ede", "428b260f8", "9eefba181", "c6e4133fa"], "source_commits": ["34c9e455d", "3f2393ede", "428b260f8", "9eefba181", "c6e4133fa"], "source_entry_id": "12.0/changes/001", "db_id": "6581fcf4cf7e96cc3cf66a5c2b61f96b", "patch_ids": ["2152487ea6caf346741426532b6bc621", "30c3100ae10f72b727560637b07a7130", "968dede4cc487f6435cd952fdc9d4c7f", "d7af3ea5e86b657289ed413905a3fafc", "f8f7d9451de18f0b7f511197046cc3d4"], "statement_hash": "301dd5333d6443589c319946860fa172fc1cf6cbe0e0fee545d436039230cbd5", "relations": [], "version": "12.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-c1fc0460db22fa1e", "cves": [], "html": "<p>允许<a href=\"/docs/12/ddl-constraints.html#DDL-CONSTRAINTS-FK\" title=\"5.4.5. 外键\">外键</a>引用分区表（Álvaro Herrera）<a href=\"https://postgr.es/c/f56f8f8da\">§</a></p>", "text": "允许外键引用分区表（Álvaro Herrera）§", "title": "允许外键引用分区表", "commits": ["f56f8f8da"], "section": "服务器 / 分区", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "1190e758b781a08511794f74c0905ba70cec7c14102f7f2da66b815d6cb003a4", "section_path": ["服务器", "分区"], "commit_groups": [["f56f8f8da"]], "identity_text": "Allow foreign keys to reference partitioned tables (Álvaro Herrera)", "commit_aliases": ["f56f8f8da"], "source_commits": ["f56f8f8da"], "source_entry_id": "12.0/changes/002", "db_id": "9fd846279eb687f04ed1ea69ed71f987", "patch_ids": ["ad374fbb097163aa712cc28edab34597"], "statement_hash": "2f7a7e084d7aa9b0bbb5a07c5d4244e8fc65018c5bf3e2b7500b05577626cfb4", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-baad693e2cfca66d", "cves": [], "html": "<p>提高向分区表执行 <code>COPY</code> 的速度（David Rowley）<a href=\"https://postgr.es/c/0d5f05cde\">§</a></p>", "text": "提高向分区表执行 COPY 的速度（David Rowley）§", "title": "提高向分区表执行 COPY 的速度", "commits": ["0d5f05cde"], "section": "服务器 / 分区", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "ccdb5af94f8e2e1963e928b52d58a73eb1b055a9ab4f2f035ff832690d3cf2ea", "section_path": ["服务器", "分区"], "commit_groups": [["0d5f05cde"]], "identity_text": "Improve speed of COPY into partitioned tables (David Rowley)", "commit_aliases": ["0d5f05cde"], "source_commits": ["0d5f05cde"], "source_entry_id": "12.0/changes/003", "db_id": "5d7dab15840bb142e80ec83db679d5e7", "patch_ids": ["c3f8c3635b66b7e2ca717d180bf741e5"], "statement_hash": "6548c76067e2c0f45573b0f2fab807d08c8922751bd5c3fdd6cc967512df93c1", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-72709b01bbd04960", "cves": [], "html": "<p>允许分区边界使用任意表达式（Kyotaro Horiguchi，Tom Lane，Amit Langote）<a href=\"https://postgr.es/c/7c079d741\">§</a></p>\n<p>此类表达式在创建分区表时求值。以前，只允许将简单常量用作分区边界。</p>", "text": "允许分区边界使用任意表达式（Kyotaro Horiguchi，Tom Lane，Amit Langote）§ 此类表达式在创建分区表时求值。以前，只允许将简单常量用作分区边界。", "title": "允许分区边界使用任意表达式", "commits": ["7c079d741"], "section": "服务器 / 分区", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "83fdc747e63d887e35060e5e09d7f9adc228728f62e6a8b73d610fef4ada931b", "section_path": ["服务器", "分区"], "commit_groups": [["7c079d741"]], "identity_text": "Allow partition bounds to be any expression (Kyotaro Horiguchi, Tom Lane, Amit Langote) Such expressions are evaluated at partitioned-table creation time. Previously, only simple constants were allowed as partition bounds.", "commit_aliases": ["7c079d741"], "source_commits": ["7c079d741"], "source_entry_id": "12.0/changes/004", "db_id": "95d1759c8db1ffd3034846f6b6f3102a", "patch_ids": ["9d959430e6a704302f0f799eddeb986b"], "statement_hash": "e46421374aec00412d7e8230a01848bc4771787db3c1cff5a1459dfbc83a9cc8", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-79cb632c8ee415e8", "cves": [], "html": "<p>允许 <code>CREATE TABLE</code> 为分区表指定的表空间影响其子分区的表空间（David Rowley，Álvaro Herrera）<a href=\"https://postgr.es/c/ca4103025\">§</a></p>", "text": "允许 CREATE TABLE 为分区表指定的表空间影响其子分区的表空间（David Rowley，Álvaro Herrera）§", "title": "允许 CREATE TABLE 为分区表指定的表空间影响其子分区的表空间", "commits": ["ca4103025"], "section": "服务器 / 分区", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "3ce769c078c005e050a05aa3f9ecff85243ca5b12d497c538ba775aa2305124b", "section_path": ["服务器", "分区"], "commit_groups": [["ca4103025"]], "identity_text": "Allow CREATE TABLE's tablespace specification for a partitioned table to affect the tablespace of its children (David Rowley, Álvaro Herrera)", "commit_aliases": ["ca4103025"], "source_commits": ["ca4103025"], "source_entry_id": "12.0/changes/005", "db_id": "37a530b72f4aeb8103a90faa4a6ffd2e", "patch_ids": ["2a338b618857d47717fbe4cd8db454aa"], "statement_hash": "f2f77952ebeabd88fdeb386433d5f2c4aa44fa4637a0bfdbbf594eb5595462f4", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-b34dacfcc2aaeddc", "cves": [], "html": "<p>如果已经按所需顺序扫描分区，则避免排序（David Rowley）<a href=\"https://postgr.es/c/959d00e9d\">§</a></p>", "text": "如果已经按所需顺序扫描分区，则避免排序（David Rowley）§", "title": "如果已经按所需顺序扫描分区，则避免排序", "commits": ["959d00e9d"], "section": "服务器 / 分区", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "06e28fd3911b49ef386a1f44ddc3c3fb65bd70890f5d1b05e5f6a6f5e6374f29", "section_path": ["服务器", "分区"], "commit_groups": [["959d00e9d"]], "identity_text": "Avoid sorting when partitions are already being scanned in the necessary order (David Rowley)", "commit_aliases": ["959d00e9d"], "source_commits": ["959d00e9d"], "source_entry_id": "12.0/changes/006", "db_id": "9406ac35dc4eff721ab9720b75ffa7f6", "patch_ids": ["cf0f43c35b10097f9d0efdb3d339d788"], "statement_hash": "dc09c9b9f65861e88e9199f134fd514a9f695b63d3acf68e0a52e1380c0eec88", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-b268f07bb46729a2", "cves": [], "html": "<p>降低执行 <a href=\"/docs/12/sql-altertable.html\" title=\"ALTER TABLE\"><code>ALTER TABLE ATTACH PARTITION</code></a> 的锁定要求（Robert Haas）<a href=\"https://postgr.es/c/898e5e329\">§</a></p>", "text": "降低执行 ALTER TABLE ATTACH PARTITION 的锁定要求（Robert Haas）§", "title": "降低执行 ALTER TABLE ATTACH PARTITION 的锁定要求", "commits": ["898e5e329"], "section": "服务器 / 分区", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "89d87c212e96ac2528b98a2594cfb2702f8bfafd653f9c172911e9a76495a8f6", "section_path": ["服务器", "分区"], "commit_groups": [["898e5e329"]], "identity_text": "ALTER TABLE ATTACH PARTITION is now performed with reduced locking requirements (Robert Haas)", "commit_aliases": ["898e5e329"], "source_commits": ["898e5e329"], "source_entry_id": "12.0/changes/007", "db_id": "c7876ec74328b546b5cbb9ae0a076ec7", "patch_ids": ["1ca57819c6f686cc451f6ca042ce24f8"], "statement_hash": "7ed57d30249aed3c1b19d7d4852acbe34bb09bc74b7aad20f71d52de66693119", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-4ff69702a796b2d9", "cves": [], "html": "<p>添加分区自省函数（Michaël Paquier，Álvaro Herrera，Amit Langote）<a href=\"https://postgr.es/c/3677a0b26\">§</a> <a href=\"https://postgr.es/c/b96f6b194\">§</a> <a href=\"https://postgr.es/c/d5eec4eef\">§</a></p>\n<p>新函数 <a href=\"/docs/12/functions-admin.html#FUNCTIONS-INFO-PARTITION\" title=\"表 9.92. 分区信息函数\"><code>pg_partition_root()</code></a> 返回分区树的最顶层父表，<a href=\"/docs/12/functions-admin.html#FUNCTIONS-INFO-PARTITION\" title=\"表 9.92. 分区信息函数\"><code>pg_partition_ancestors()</code></a> 报告分区的所有祖先，<a href=\"/docs/12/functions-admin.html#FUNCTIONS-INFO-PARTITION\" title=\"表 9.92. 分区信息函数\"><code>pg_partition_tree()</code></a> 显示分区信息。</p>", "text": "添加分区自省函数（Michaël Paquier，Álvaro Herrera，Amit Langote）§ § § 新函数 pg_partition_root() 返回分区树的最顶层父表，pg_partition_ancestors() 报告分区的所有祖先，pg_partition_tree() 显示分区信息。", "title": "添加分区自省函数", "commits": ["3677a0b26", "b96f6b194", "d5eec4eef"], "section": "服务器 / 分区", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "b5d8c16fabb06ba0ebd49f066af2010e35c0d14a6202de2c62824dbf2ddc562c", "section_path": ["服务器", "分区"], "commit_groups": [["3677a0b26"], ["b96f6b194"], ["d5eec4eef"]], "identity_text": "Add partition introspection functions (Michaël Paquier, Álvaro Herrera, Amit Langote) The new function pg_partition_root() returns the top-most parent of a partition tree, pg_partition_ancestors() reports all ancestors of a partition, and pg_partition_tree() displays information about partitions.", "commit_aliases": ["3677a0b26", "b96f6b194", "d5eec4eef"], "source_commits": ["3677a0b26", "b96f6b194", "d5eec4eef"], "source_entry_id": "12.0/changes/008", "db_id": "20d0c868abe847ab2ab1ed0887069fc2", "patch_ids": ["16177465652bb8f9e3ab176e91e45628", "2697bad882413d03ef3347d3b7694ba5", "cdb8e57342a5604ee92b662af392b80c"], "statement_hash": "0d760daf68369413d935d8e263a7db6ac919d4fccb575eeb80065135a0055fa9", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-37b1b021963e9e74", "cves": [], "html": "<p>在系统视图 <a href=\"/docs/12/view-pg-indexes.html\" title=\"51.73. pg_indexes\"><code>pg_indexes</code></a> 中包含分区索引（Suraj Kharage）<a href=\"https://postgr.es/c/f94cec644\">§</a></p>", "text": "在系统视图 pg_indexes 中包含分区索引（Suraj Kharage）§", "title": "在系统视图 pg_indexes 中包含分区索引", "commits": ["f94cec644"], "section": "服务器 / 分区", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "967297cfed41156d3e064110c4078fa9c2ec42a4b40e407e581f2ac9793bedf7", "section_path": ["服务器", "分区"], "commit_groups": [["f94cec644"]], "identity_text": "Include partitioned indexes in the system view pg_indexes (Suraj Kharage)", "commit_aliases": ["f94cec644"], "source_commits": ["f94cec644"], "source_entry_id": "12.0/changes/009", "db_id": "bc37a9ad528d0865433e70962d9f61e2", "patch_ids": ["c09844689bae56f543a801518a5d5d66"], "statement_hash": "dcb72a5518e5b5a514531474c2d8f7d1bea289dd097a04571438b1e116ac2d6b", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-79b6ae8c564fa7b2", "cves": [], "html": "<p>添加 <span>psql</span> 命令 <code>\\dP</code>，用于列出分区表和索引（Pavel Stehule）<a href=\"https://postgr.es/c/1c5d9270e\">§</a></p>", "text": "添加 psql 命令 \\dP，用于列出分区表和索引（Pavel Stehule）§", "title": "添加 psql 命令 \\dP，用于列出分区表和索引", "commits": ["1c5d9270e"], "section": "服务器 / 分区", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "c27ab79908e1951ab1c18fd869d0181d30cdfbb838c801e5f5b2468488b9faab", "section_path": ["服务器", "分区"], "commit_groups": [["1c5d9270e"]], "identity_text": "Add psql command \\dP to list partitioned tables and indexes (Pavel Stehule)", "commit_aliases": ["1c5d9270e"], "source_commits": ["1c5d9270e"], "source_entry_id": "12.0/changes/010", "db_id": "03741015359004ff63475dc697c48b83", "patch_ids": ["2c4b62d635cc35475b8930b5eca05678"], "statement_hash": "266efd38e289649cc75280e341823f93f5a3b6751a70a60a764c7c664a9870f6", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-4439ab33417df540", "cves": [], "html": "<p>改进 <span>psql</span> 的 <code>\\d</code> 和 <code>\\z</code> 对分区表的显示（Pavel Stehule，Michaël Paquier，Álvaro Herrera）<a href=\"https://postgr.es/c/d56e0fde8\">§</a> <a href=\"https://postgr.es/c/1af25ca0c\">§</a> <a href=\"https://postgr.es/c/b036982db\">§</a></p>", "text": "改进 psql 的 \\d 和 \\z 对分区表的显示（Pavel Stehule，Michaël Paquier，Álvaro Herrera）§ § §", "title": "改进 psql 的 \\d 和 \\z 对分区表的显示", "commits": ["1af25ca0c", "b036982db", "d56e0fde8"], "section": "服务器 / 分区", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "fb915387556b260db952796dbbec8c9f52c95e514025423befc8da05944eb290", "section_path": ["服务器", "分区"], "commit_groups": [["1af25ca0c"], ["b036982db"], ["d56e0fde8"]], "identity_text": "Improve psql \\d and \\z display of partitioned tables (Pavel Stehule, Michaël Paquier, Álvaro Herrera)", "commit_aliases": ["1af25ca0c", "b036982db", "d56e0fde8"], "source_commits": ["1af25ca0c", "b036982db", "d56e0fde8"], "source_entry_id": "12.0/changes/011", "db_id": "2b00618c729d35c3596f2b349bf93b1d", "patch_ids": ["0d7bcefe2ae2148af8dd0ce2d61a257a", "1b3e55203cb8e7f656a2c2b7d9d70883", "51a4f712d02995a519eb362242171aad"], "statement_hash": "07ddc2d49b8cd88fe0c3d447ad82daad2c3fe6b1d38b7a9f137c3b6dc81b1418", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-37d5bddae7e522f8", "cves": [], "html": "<p>修复可能导致 <code>ALTER TABLE DETACH PARTITION</code> 留下不正确依赖状态的缺陷；这可能使后续操作行为异常，例如在删除表时未删除曾属于分区的子索引（Tom Lane）<a href=\"https://postgr.es/c/1d92a0c9f\">§</a></p>", "text": "修复可能导致 ALTER TABLE DETACH PARTITION 留下不正确依赖状态的缺陷；这可能使后续操作行为异常，例如在删除表时未删除曾属于分区的子索引（Tom Lane）§", "title": "修复可能导致 ALTER TABLE DETACH PARTITION 留下不正确依赖状态的缺陷；这可能使后续操作行为异常，例如在删除表时未删除曾属于分区的子索引", "commits": ["1d92a0c9f"], "section": "服务器 / 分区", "category": "bugfix", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "a6d2e891579f6ee40639ffa61edc02cf66faafd1360b509017fd8a22ca1ecad2", "section_path": ["服务器", "分区"], "commit_groups": [["1d92a0c9f"]], "identity_text": "Fix bugs that could cause ALTER TABLE DETACH PARTITION to leave behind incorrect dependency state, allowing subsequent operations to misbehave, for example by not dropping a former partition child index when its table is dropped (Tom Lane)", "commit_aliases": ["1d92a0c9f"], "source_commits": ["1d92a0c9f"], "source_entry_id": "12.0/changes/012", "db_id": "2942001e60ae520dec7c60cdca0ef3cf", "patch_ids": ["a4dd9a6ba3018f8aa1dd4a2d2d7b6f9a"], "statement_hash": "655b1a19df2a2f287ed07ed7af55180594219eec7cfa7f802d875e40198f6117", "relations": [], "version": "12.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-9987a84ca00e9d8b", "cves": [], "html": "<p>提高具有大量重复值的 B-树索引的性能和空间利用率（Peter Geoghegan，Heikki Linnakangas）<a href=\"https://postgr.es/c/dd299df81\">§</a> <a href=\"https://postgr.es/c/fab250243\">§</a> <a href=\"https://postgr.es/c/f21668f32\">§</a></p>\n<p>以前，重复索引条目在其重复值组内无序存储。这会增加索引插入的开销，因过多的页面分裂浪费空间，并降低 <code>VACUUM</code> 回收整个页面的能力。现在，重复索引条目按堆存储顺序排序。</p>\n<p>通过 <span>pg_upgrade</span> 从以前版本升级而来的索引无法获得这些好处。</p>", "text": "提高具有大量重复值的 B-树索引的性能和空间利用率（Peter Geoghegan，Heikki Linnakangas）§ § § 以前，重复索引条目在其重复值组内无序存储。这会增加索引插入的开销，因过多的页面分裂浪费空间，并降低 VACUUM 回收整个页面的能力。现在，重复索引条目按堆存储顺序排序。 通过 pg_upgrade 从以前版本升级而来的索引无法获得这些好处。", "title": "提高具有大量重复值的 B-树索引的性能和空间利用率", "commits": ["dd299df81", "f21668f32", "fab250243"], "section": "服务器 / 索引", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "685eead1815bb64ca924e6004d6aaefea1f76268800fa8d8fee238a90cdaa279", "section_path": ["服务器", "索引"], "commit_groups": [["dd299df81"], ["f21668f32"], ["fab250243"]], "identity_text": "Improve performance and space utilization of btree indexes with many duplicates (Peter Geoghegan, Heikki Linnakangas) Previously, duplicate index entries were stored unordered within their duplicate groups. This caused overhead during index inserts, wasted space due to excessive page splits, and it reduced VACUUM's ability to recycle entire pages. Duplicate index entries are now sorted in heap-storage order. Indexes pg_upgrade'd from previous releases will not have these benefits.", "commit_aliases": ["dd299df81", "f21668f32", "fab250243"], "source_commits": ["dd299df81", "f21668f32", "fab250243"], "source_entry_id": "12.0/changes/013", "db_id": "aad8107f07f86f1bde08c4fc057e36e3", "patch_ids": ["85a8c76618f80c5f1eee244def8a9fdd", "a43ca6400105f4870998ecb53a5cd53b", "ed56a1e3c61b4125c20e891d4303c11c"], "statement_hash": "0b7aacb6e0432d75062bcd11f568cdaa5bbbc71aca161234b6f0cbfea6318e1f", "relations": [{"rule": 2, "type": "related", "target": "77c2078559927cb4722625ff14b67cfd", "evidence": {"same_day": true, "patch_ids": ["a43ca6400105f4870998ecb53a5cd53b"]}}], "version": "12.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": [{"db_id": "77c2078559927cb4722625ff14b67cfd", "kind": "related", "version": "12.0", "label": "12.0", "title": "在新建的 B-树索引中，将索引条目的最大长度减少八字节，以改进对重复条目的处理", "evidence": {"same_day": true, "patch_ids": ["a43ca6400105f4870998ecb53a5cd53b"]}, "url": "/docs/compare/?release=12.0#12.0-a316fc9b14a3be83", "source_url": "/docs/release/12.0/#id-1.11.6.28.4"}]}, {"id": "12.0-c365cb484a2d5291", "cves": [], "html": "<p>允许多列 B-树索引占用更少空间（Peter Geoghegan，Heikki Linnakangas）</p>\n<p>内部页面和叶子页面的最小/最大值指示项现在只存储到发生差异的键为止的索引键，而非全部索引键。这也提高了索引访问的局部性。</p>\n<p>通过 <span>pg_upgrade</span> 从以前版本升级而来的索引无法获得这些好处。</p>", "text": "允许多列 B-树索引占用更少空间（Peter Geoghegan，Heikki Linnakangas） 内部页面和叶子页面的最小/最大值指示项现在只存储到发生差异的键为止的索引键，而非全部索引键。这也提高了索引访问的局部性。 通过 pg_upgrade 从以前版本升级而来的索引无法获得这些好处。", "title": "允许多列 B-树索引占用更少空间", "commits": [], "section": "服务器 / 索引", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "88074d8435583bb781612fa7f0d3755982ed663a0b8be8daec4c569ca73335b4", "section_path": ["服务器", "索引"], "commit_groups": [], "identity_text": "Allow multi-column btree indexes to be smaller (Peter Geoghegan, Heikki Linnakangas) Internal pages and min/max leaf page indicators now only store index keys until the change key, rather than all indexed keys. This also improves the locality of index access. Indexes pg_upgrade'd from previous releases will not have these benefits.", "commit_aliases": [], "source_commits": [], "source_entry_id": "12.0/changes/014", "db_id": "febc620a9d8923e8519db7b4c8d2513d", "patch_ids": [], "statement_hash": "945f2f328d9f7f9fe10bf3f38a4c20893a17375016a00641667bc4cb02518c87", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-0d8135e7ae59b491", "cves": [], "html": "<p>通过减少锁定开销提高 B-树索引插入速度（Alexander Korotkov）<a href=\"https://postgr.es/c/d2086b08b\">§</a></p>", "text": "通过减少锁定开销提高 B-树索引插入速度（Alexander Korotkov）§", "title": "通过减少锁定开销提高 B-树索引插入速度", "commits": ["d2086b08b"], "section": "服务器 / 索引", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "7df3f8c57c9bc25914f042b3f8fa3c23bdd990902259ab97c4b249aa8eebef47", "section_path": ["服务器", "索引"], "commit_groups": [["d2086b08b"]], "identity_text": "Improve speed of btree index insertions by reducing locking overhead (Alexander Korotkov)", "commit_aliases": ["d2086b08b"], "source_commits": ["d2086b08b"], "source_entry_id": "12.0/changes/015", "db_id": "f913a009f14c2b5c68bbd1ff90eca686", "patch_ids": ["00f74afaf602ae42ee2dd4ac23b7921f"], "statement_hash": "b2e7b1a40f4862e0b9597e74396fc445d27e7202a178016b5dec2d42b518a849", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-ec81d3c387ba1bf1", "cves": [], "html": "<p>在 <a href=\"/docs/12/gist.html\" title=\"第 64 章 GiST 索引\">GiST</a> 索引中支持 <a href=\"/docs/12/indexes-index-only-scans.html\" title=\"11.9. 仅索引扫描和覆盖索引\"><code>INCLUDE</code></a> 列（Andrey Borodin）<a href=\"https://postgr.es/c/f2e403803\">§</a></p>", "text": "在 GiST 索引中支持 INCLUDE 列（Andrey Borodin）§", "title": "在 GiST 索引中支持 INCLUDE 列", "commits": ["f2e403803"], "section": "服务器 / 索引", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "ec0799d17654b650f48d9fbbc8c1869a357245ac069b0feaae4449b21d6ec7ff", "section_path": ["服务器", "索引"], "commit_groups": [["f2e403803"]], "identity_text": "Support INCLUDE columns in GiST indexes (Andrey Borodin)", "commit_aliases": ["f2e403803"], "source_commits": ["f2e403803"], "source_entry_id": "12.0/changes/016", "db_id": "3434d836c565be0646498f6dd54a8a7a", "patch_ids": ["f38f1cd5af1cac168a6e9e2eb96f14cb"], "statement_hash": "6b8aa813a75055b01a4e2d2c64220c12f5cfc612ab19666345f1659b77ec702d", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-fe31136ef79c1bac", "cves": [], "html": "<p>添加对 <a href=\"/docs/12/spgist.html\" title=\"第 65 章 SP-GiST 索引\">SP-GiST</a> 索引的最近邻（<acronym>KNN</acronym>）搜索的支持（Nikita Glukhov，Alexander Korotkov，Vlad Sterzhanov）<a href=\"https://postgr.es/c/2a6368343\">§</a></p>", "text": "添加对 SP-GiST 索引的最近邻（KNN）搜索的支持（Nikita Glukhov，Alexander Korotkov，Vlad Sterzhanov）§", "title": "添加对 SP-GiST 索引的最近邻（KNN）搜索的支持", "commits": ["2a6368343"], "section": "服务器 / 索引", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "0883604b6369fdcfd4018f37a81163c5139b14f1608f4db27b47d6a5d6889376", "section_path": ["服务器", "索引"], "commit_groups": [["2a6368343"]], "identity_text": "Add support for nearest-neighbor (KNN) searches of SP-GiST indexes (Nikita Glukhov, Alexander Korotkov, Vlad Sterzhanov)", "commit_aliases": ["2a6368343"], "source_commits": ["2a6368343"], "source_entry_id": "12.0/changes/017", "db_id": "e38729ac249ed7e4685d9cdf4d058498", "patch_ids": ["addbebe0c558edb6f25985ef77d43dc1"], "statement_hash": "8672620a55db45e020d78a960e212867fdb6f9e013ded61a2406263ccb7705c5", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-b761d33d077a0244", "cves": [], "html": "<p>减少创建 <acronym>GiST</acronym>、<acronym>GIN</acronym> 和 <acronym>SP-GiST</acronym> 索引时的 <acronym>WAL</acronym> 写入开销（Anastasia Lubennikova，Andrey V. Lepikhov）<a href=\"https://postgr.es/c/9155580fd\">§</a></p>", "text": "减少创建 GiST、GIN 和 SP-GiST 索引时的 WAL 写入开销（Anastasia Lubennikova，Andrey V. Lepikhov）§", "title": "减少创建 GiST、GIN 和 SP-GiST 索引时的 WAL 写入开销", "commits": ["9155580fd"], "section": "服务器 / 索引", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "d9a7213147fda6bb25d5eaa52cda47fb2efab15a8f719412b5165fc44eccddd8", "section_path": ["服务器", "索引"], "commit_groups": [["9155580fd"]], "identity_text": "Reduce the WAL write overhead of GiST, GIN, and SP-GiST index creation (Anastasia Lubennikova, Andrey V. Lepikhov)", "commit_aliases": ["9155580fd"], "source_commits": ["9155580fd"], "source_entry_id": "12.0/changes/018", "db_id": "b8352e6c1c9a48265deabde4e4be6e73", "patch_ids": ["201e3b512328b791c3d56b0100102cc6"], "statement_hash": "bf791e880157c1771c9f911fd73ac2ba0e40997d250985818b87a31f41178bb7", "relations": [], "version": "12.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-f1519faf24953ad4", "cves": [], "html": "<p>提高多列索引上仅索引扫描的效率（Konstantin Knizhnik）<a href=\"https://postgr.es/c/80b9e9c46\">§</a></p>", "text": "提高多列索引上仅索引扫描的效率（Konstantin Knizhnik）§", "title": "提高多列索引上仅索引扫描的效率", "commits": ["80b9e9c46"], "section": "服务器 / 索引", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "4f9b95f7369737303b5e0dcc6f374dc5522698367d016503f494445f6276bdbb", "section_path": ["服务器", "索引"], "commit_groups": [["80b9e9c46"]], "identity_text": "Allow index-only scans to be more efficient on indexes with many columns (Konstantin Knizhnik)", "commit_aliases": ["80b9e9c46"], "source_commits": ["80b9e9c46"], "source_entry_id": "12.0/changes/019", "db_id": "5fc3539a93301992cd275b231da180c0", "patch_ids": ["a6f94adad565b76f3b27fc3f97c5f331"], "statement_hash": "b3f81b7bcee4c308b9b854b3a7355969932a9c097843d2e1a2b94e117a64bde9", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-b4d55c15f185d255", "cves": [], "html": "<p>提高 GiST 索引清理扫描的性能（Andrey Borodin，Konstantin Kuznetsov，Heikki Linnakangas）<a href=\"https://postgr.es/c/fe280694d\">§</a></p>", "text": "提高 GiST 索引清理扫描的性能（Andrey Borodin，Konstantin Kuznetsov，Heikki Linnakangas）§", "title": "提高 GiST 索引清理扫描的性能", "commits": ["fe280694d"], "section": "服务器 / 索引", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "cee39bf0b964ca64548470ec6a50abc9f33ac865f1f6b46d392c0e2569b6e316", "section_path": ["服务器", "索引"], "commit_groups": [["fe280694d"]], "identity_text": "Improve the performance of vacuum scans of GiST indexes (Andrey Borodin, Konstantin Kuznetsov, Heikki Linnakangas)", "commit_aliases": ["fe280694d"], "source_commits": ["fe280694d"], "source_entry_id": "12.0/changes/020", "db_id": "c466c7b597b17fa85b2e4e74409cdcda", "patch_ids": ["fce11426b6051be4ef4b96ea2913758a"], "statement_hash": "ecddb39ba69c61ba1ee85d16a7ef82971338e35bfbd675638c7d797721fce445", "relations": [], "version": "12.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-f917f27ed4c8e0be", "cves": [], "html": "<p>在 <acronym>GiST</acronym> <code>VACUUM</code> 期间删除空的叶子页面（Andrey Borodin）<a href=\"https://postgr.es/c/7df159a62\">§</a></p>", "text": "在 GiST VACUUM 期间删除空的叶子页面（Andrey Borodin）§", "title": "在 GiST VACUUM 期间删除空的叶子页面", "commits": ["7df159a62"], "section": "服务器 / 索引", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "db09263be6e06b835af59796a5779f1067a500e91d9237e8f2ba8c0914c84613", "section_path": ["服务器", "索引"], "commit_groups": [["7df159a62"]], "identity_text": "Delete empty leaf pages during GiST VACUUM (Andrey Borodin)", "commit_aliases": ["7df159a62"], "source_commits": ["7df159a62"], "source_entry_id": "12.0/changes/021", "db_id": "aed90004deac754591a2ddbfe319700d", "patch_ids": ["409cff2412cdc64c45ca8be787860be3"], "statement_hash": "f6d4558c73c003f94076f6756b8fb67d5346eafe50fa4351769e616cb162c456", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-e5d7fe27b17615ce", "cves": [], "html": "<p>降低索引重命名的锁定要求（Peter Eisentraut）<a href=\"https://postgr.es/c/1b5d797cd\">§</a></p>", "text": "降低索引重命名的锁定要求（Peter Eisentraut）§", "title": "降低索引重命名的锁定要求", "commits": ["1b5d797cd"], "section": "服务器 / 索引", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "0441d4a1a120f5ecbf07374309d4d863771fb46bfd2ecfaaf9159911edf8743b", "section_path": ["服务器", "索引"], "commit_groups": [["1b5d797cd"]], "identity_text": "Reduce locking requirements for index renaming (Peter Eisentraut)", "commit_aliases": ["1b5d797cd"], "source_commits": ["1b5d797cd"], "source_entry_id": "12.0/changes/022", "db_id": "021e92f4216a435c67b49edb3dc4b791", "patch_ids": ["f90e6e16c1849a8e5a2b49fb1daa6011"], "statement_hash": "9509174906273189c8555c5257b31686d3ac80459ef20d193146723807f0dfac", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-4d844511f83d26be", "cves": [], "html": "<p>允许<a href=\"/docs/12/sql-createstatistics.html\" title=\"CREATE STATISTICS\"><span>CREATE STATISTICS</span></a>创建多列最常见值统计信息（Tomas Vondra）<a href=\"https://postgr.es/c/7300a6995\">§</a> <a href=\"https://postgr.es/c/a63b29a1d\">§</a></p>\n<p>这改进了对多个列进行测试、需要估算多个 <code>WHERE</code> 子句综合效果的查询的优化。如果这些列彼此相关且分布不均匀，多列统计信息将使估算显著改善。</p>", "text": "允许CREATE STATISTICS创建多列最常见值统计信息（Tomas Vondra）§ § 这改进了对多个列进行测试、需要估算多个 WHERE 子句综合效果的查询的优化。如果这些列彼此相关且分布不均匀，多列统计信息将使估算显著改善。", "title": "允许CREATE STATISTICS创建多列最常见值统计信息", "commits": ["7300a6995", "a63b29a1d"], "section": "服务器 / 优化器", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "f88e2a9059898ed359e193b7bbae216c89b78a61c60cc58c4d7e1a46c8e6b143", "section_path": ["服务器", "优化器"], "commit_groups": [["7300a6995"], ["a63b29a1d"]], "identity_text": "Allow sql-createstatistics to create most-common-value statistics for multiple columns (Tomas Vondra) This improves optimization for queries that test several columns, requiring an estimate of the combined effect of several WHERE clauses. If the columns are correlated and have non-uniform distributions then multi-column statistics will allow much better estimates.", "commit_aliases": ["7300a6995", "a63b29a1d"], "source_commits": ["7300a6995", "a63b29a1d"], "source_entry_id": "12.0/changes/023", "db_id": "dd1a7cb20062cb3129dadd4563084837", "patch_ids": ["69173087a656986cbab7b47a2ba5931d", "a59254935ffab55b6d8a1c5c4654417a"], "statement_hash": "64336baf734bd57f511b74fdeb56e9ef1529a63b135ccf4c1620cac65f0828d6", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-06e8293800bad8a4", "cves": [], "html": "<p>允许将<a href=\"/docs/12/queries-with.html\" title=\"7.8. WITH查询（公共表表达式）\">公共表表达式</a>（<acronym>CTEs</acronym>）内联到外层查询中（Andreas Karlsson，Andrew Gierth，David Fetter，Tom Lane）<a href=\"https://postgr.es/c/608b167f9\">§</a> <a href=\"https://postgr.es/c/947613127\">§</a></p>\n<p>具体而言，如果 <acronym>CTE</acronym> 没有副作用、不是递归的，且在查询中只被引用一次，就会被自动内联。可以指定 <code>MATERIALIZED</code> 来阻止内联，也可以指定 <code>NOT MATERIALIZED</code>，强制内联被多次引用的 <acronym>CTE</acronym>。以前，<acronym>CTE</acronym> 从不被内联，总是在查询其余部分之前求值。</p>", "text": "允许将公共表表达式（CTEs）内联到外层查询中（Andreas Karlsson，Andrew Gierth，David Fetter，Tom Lane）§ § 具体而言，如果 CTE 没有副作用、不是递归的，且在查询中只被引用一次，就会被自动内联。可以指定 MATERIALIZED 来阻止内联，也可以指定 NOT MATERIALIZED，强制内联被多次引用的 CTE。以前，CTE 从不被内联，总是在查询其余部分之前求值。", "title": "允许将公共表表达式（CTEs）内联到外层查询中", "commits": ["608b167f9", "947613127"], "section": "服务器 / 优化器", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "c2aad0d78fa5f31cf4232cfd5835e9779fdddf2616a878ebeeea2561e996e7e7", "section_path": ["服务器", "优化器"], "commit_groups": [["608b167f9"], ["947613127"]], "identity_text": "Allow common table expressions (CTEs) to be inlined into the outer query (Andreas Karlsson, Andrew Gierth, David Fetter, Tom Lane) Specifically, CTEs are automatically inlined if they have no side-effects, are not recursive, and are referenced only once in the query. Inlining can be prevented by specifying MATERIALIZED, or forced for multiply-referenced CTEs by specifying NOT MATERIALIZED. Previously, CTEs were never inlined and were always evaluated before the rest of the query.", "commit_aliases": ["608b167f9", "947613127"], "source_commits": ["608b167f9", "947613127"], "source_entry_id": "12.0/changes/024", "db_id": "3b2b648a4fe094ff5ab95bc5a0b2d5b5", "patch_ids": ["0ffd2243a6ca274943647c84a42cad86", "f3e51f75d12a5d3fe164562b8ad715aa"], "statement_hash": "460ab50b58ba006cd75adcc916730d555e1eff072585fd81b92dce18d7a70219", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-72f682d85648b895", "cves": [], "html": "<p>允许控制何时为预备语句使用通用计划（Pavel Stehule）<a href=\"https://postgr.es/c/f7cb2842b\">§</a></p>\n<p>这由服务器参数<a href=\"/docs/12/runtime-config-query.html#GUC-PLAN-CACHE_MODE\">plan_cache_mode</a>控制。</p>", "text": "允许控制何时为预备语句使用通用计划（Pavel Stehule）§ 这由服务器参数plan_cache_mode控制。", "title": "允许控制何时为预备语句使用通用计划", "commits": ["f7cb2842b"], "section": "服务器 / 优化器", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "78d69207c5c4ddc4fa034757909190adb0fda84315b33753ddf7d049b8fb829b", "section_path": ["服务器", "优化器"], "commit_groups": [["f7cb2842b"]], "identity_text": "Allow control over when generic plans are used for prepared statements (Pavel Stehule) This is controlled by the guc-plan-cache_mode server parameter.", "commit_aliases": ["f7cb2842b"], "source_commits": ["f7cb2842b"], "source_entry_id": "12.0/changes/025", "db_id": "fcf4663a5bd7cdc2c7200eef1325acdd", "patch_ids": ["d812ae1d63b64715e2ada5dbc6ba532f"], "statement_hash": "6135ac32ba832fb592c95977f5c953badeefa2ec0c805af157eec0aa741c56c7", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-d7e63f008dfda1ef", "cves": [], "html": "<p>改进只有一个子项的分区查询和 <code>UNION ALL</code> 查询的优化（David Rowley）<a href=\"https://postgr.es/c/8edd0e794\">§</a></p>", "text": "改进只有一个子项的分区查询和 UNION ALL 查询的优化（David Rowley）§", "title": "改进只有一个子项的分区查询和 UNION ALL 查询的优化", "commits": ["8edd0e794"], "section": "服务器 / 优化器", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "80cbbae864d453bee4b26c2a2cb75eaaa9d9bae69fae57b605b3e6f3118a8b77", "section_path": ["服务器", "优化器"], "commit_groups": [["8edd0e794"]], "identity_text": "Improve optimization of partition and UNION ALL queries that have only a single child (David Rowley)", "commit_aliases": ["8edd0e794"], "source_commits": ["8edd0e794"], "source_entry_id": "12.0/changes/026", "db_id": "c0cee280bec5794aa93d80dfb19fca39", "patch_ids": ["2a79321fd491ca2ed7bc9d6955f0c29b"], "statement_hash": "5ade77de75bb972230bdd2b1abe78f2ca10fd9ac6bb022895cd8a88a3e4ba0aa", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-752e289182cca64a", "cves": [], "html": "<p>改进对没有检查约束的<a href=\"/docs/12/domains.html\" title=\"8.18. 域类型\">域</a>的处理（Tom Lane）<a href=\"https://postgr.es/c/04fe805a1\">§</a></p>\n<p>仅用作类型别名的域不再给优化带来困难。</p>", "text": "改进对没有检查约束的域的处理（Tom Lane）§ 仅用作类型别名的域不再给优化带来困难。", "title": "改进对没有检查约束的域的处理", "commits": ["04fe805a1"], "section": "服务器 / 优化器", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "c2992d40a51f4bb2edaf8acf6341e3f915897670c4b70f62cd0080f3575864ff", "section_path": ["服务器", "优化器"], "commit_groups": [["04fe805a1"]], "identity_text": "Improve processing of domains that have no check constraints (Tom Lane) Domains that are being used purely as type aliases no longer cause optimization difficulties.", "commit_aliases": ["04fe805a1"], "source_commits": ["04fe805a1"], "source_entry_id": "12.0/changes/027", "db_id": "3184dba624b44db8c4081e9def17fc7e", "patch_ids": ["fbf4e7132eeacd38f75837c6cba8e205"], "statement_hash": "912f88c218058c3cc88394bbd7c9805e22b442b8945b9795e0ed4e6ab0ac21b5", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-4dcd7e7b2f274499", "cves": [], "html": "<p>当参数为常量时，预先计算 <a href=\"/docs/12/functions-conditional.html#FUNCTIONS-GREATEST-LEAST\" title=\"9.17.4. GREATEST和LEAST\"><code>LEAST</code></a> 和 <code>GREATEST</code> 调用（Vik Fearing）<a href=\"https://postgr.es/c/6f19a8c41\">§</a></p>", "text": "当参数为常量时，预先计算 LEAST 和 GREATEST 调用（Vik Fearing）§", "title": "当参数为常量时，预先计算 LEAST 和 GREATEST 调用", "commits": ["6f19a8c41"], "section": "服务器 / 优化器", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "642898021fc24d19184abf4710292b129105be52e881ca0292eddd360accc3b8", "section_path": ["服务器", "优化器"], "commit_groups": [["6f19a8c41"]], "identity_text": "Pre-evaluate calls of LEAST and GREATEST when their arguments are constants (Vik Fearing)", "commit_aliases": ["6f19a8c41"], "source_commits": ["6f19a8c41"], "source_entry_id": "12.0/changes/028", "db_id": "70f4e95e9063368628b65470b905a562", "patch_ids": ["f090f567c26c1a30c6f2feda1fceaa14"], "statement_hash": "b9e00f4e0023f8163a36077ed17ee032f1fa271fc5f7a52cf51a322d58e9b608", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-fe0dbbcf08f15f03", "cves": [], "html": "<p>提高优化器验证带有 <code>IS NOT NULL</code> 条件的部分索引可用于查询的能力（Tom Lane，James Coleman）<a href=\"https://postgr.es/c/e04a3905e\">§</a> <a href=\"https://postgr.es/c/65ce07e02\">§</a></p>\n<p>当调用查询包含类型转换或大型 <code><em><code>x</code></em> IN (<em><code>array</code></em>)</code> 子句时，现在可以在更多情况下识别索引的可用性。</p>", "text": "提高优化器验证带有 IS NOT NULL 条件的部分索引可用于查询的能力（Tom Lane，James Coleman）§ § 当调用查询包含类型转换或大型 x IN (array) 子句时，现在可以在更多情况下识别索引的可用性。", "title": "提高优化器验证带有 IS NOT NULL 条件的部分索引可用于查询的能力", "commits": ["65ce07e02", "e04a3905e"], "section": "服务器 / 优化器", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "7f9fc05242a868993173e8008c35cdfe5ee9822ec081ab8d2e7fe7feb43178f5", "section_path": ["服务器", "优化器"], "commit_groups": [["65ce07e02"], ["e04a3905e"]], "identity_text": "Improve optimizer's ability to verify that partial indexes with IS NOT NULL conditions are usable in queries (Tom Lane, James Coleman) Usability can now be recognized in more cases where the calling query involves casts or large x IN (array) clauses.", "commit_aliases": ["65ce07e02", "e04a3905e"], "source_commits": ["65ce07e02", "e04a3905e"], "source_entry_id": "12.0/changes/029", "db_id": "8207bd1ec01b3654db1f4649a5576db0", "patch_ids": ["25ae9753de65e7b461aa86d6352f9df8", "c7c5e1d691d43feff74083e9ecbb29d7"], "statement_hash": "842c5cc8bf823fc4524e6d62a77fc64a1e2fdd7d1434560f1509d956481907cd", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-8f12633cae1371fe", "cves": [], "html": "<p>使用为每列定义的排序规则计算 <code>ANALYZE</code> 统计信息（Tom Lane）<a href=\"https://postgr.es/c/5e0928005\">§</a></p>\n<p>以前，所有统计信息都使用数据库的默认排序规则。对于使用非默认排序规则的列，这可能改善优化器行为。</p>", "text": "使用为每列定义的排序规则计算 ANALYZE 统计信息（Tom Lane）§ 以前，所有统计信息都使用数据库的默认排序规则。对于使用非默认排序规则的列，这可能改善优化器行为。", "title": "使用为每列定义的排序规则计算 ANALYZE 统计信息", "commits": ["5e0928005"], "section": "服务器 / 优化器", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "bb3ff527830dcc484dc8483d2380fd267efcc198a611e1b6e90d1b827897c8b1", "section_path": ["服务器", "优化器"], "commit_groups": [["5e0928005"]], "identity_text": "Compute ANALYZE statistics using the collation defined for each column (Tom Lane) Previously, the database's default collation was used for all statistics. This potentially gives better optimizer behavior for columns with non-default collations.", "commit_aliases": ["5e0928005"], "source_commits": ["5e0928005"], "source_entry_id": "12.0/changes/030", "db_id": "74c6f061ec243c6dee0645f5f2d5f988", "patch_ids": ["e08c25eaf032ef5041f648c956cb47d0"], "statement_hash": "db73ecc86d8d28d1049dd3bb65e4355d661c3477e73d027939b374fe3f4b13de", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-0a6ca58221baaf31", "cves": [], "html": "<p>改进对 <a href=\"/docs/12/ddl-system-columns.html\" title=\"5.5. 系统列\"><code>ctid</code></a> 列进行不等式比较时的选择率估算（Edmund Horner）<a href=\"https://postgr.es/c/f7111f72d\">§</a></p>", "text": "改进对 ctid 列进行不等式比较时的选择率估算（Edmund Horner）§", "title": "改进对 ctid 列进行不等式比较时的选择率估算", "commits": ["f7111f72d"], "section": "服务器 / 优化器", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "250668e5ad42039f89b18b2cf90619197e621eca86e6f547c31608ef4cc492fc", "section_path": ["服务器", "优化器"], "commit_groups": [["f7111f72d"]], "identity_text": "Improve selectivity estimates for inequality comparisons on ctid columns (Edmund Horner)", "commit_aliases": ["f7111f72d"], "source_commits": ["f7111f72d"], "source_entry_id": "12.0/changes/031", "db_id": "bc8587cdd339936156a99cdcce2d64ca", "patch_ids": ["f70db899b8edc0f6561cb91dbd4b1783"], "statement_hash": "e809064f78ce200d2863c72ec2c2198ce498d514a876c639ef2cb2e217c9f476", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-71a1fbc6e7b2320c", "cves": [], "html": "<p>改进对 <a href=\"/docs/12/datatype-oid.html\" title=\"8.19. 对象标识符类型\"><code>tid</code></a> 类型列进行连接时的优化（Tom Lane）<a href=\"https://postgr.es/c/b5415e3c2\">§</a> <a href=\"https://postgr.es/c/0a6ea4001\">§</a></p>\n<p>这些更改主要提高了对 <code>ctid</code> 列进行自连接的效率。</p>", "text": "改进对 tid 类型列进行连接时的优化（Tom Lane）§ § 这些更改主要提高了对 ctid 列进行自连接的效率。", "title": "改进对 tid 类型列进行连接时的优化", "commits": ["0a6ea4001", "b5415e3c2"], "section": "服务器 / 优化器", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "b8d5effb1a32aef9641016a5ff8e179c548b327439127b35c9bdf8baa007dfb1", "section_path": ["服务器", "优化器"], "commit_groups": [["0a6ea4001"], ["b5415e3c2"]], "identity_text": "Improve optimization of joins on columns of type tid (Tom Lane) These changes primarily improve the efficiency of self-joins on ctid columns.", "commit_aliases": ["0a6ea4001", "b5415e3c2"], "source_commits": ["0a6ea4001", "b5415e3c2"], "source_entry_id": "12.0/changes/032", "db_id": "711d9686ff352f779f770d8b93d0e29b", "patch_ids": ["190f29450404564a0c9878d3a6f674c7", "f49633c5521d66446d7ec04896e91d83"], "statement_hash": "236e1df896ec2888a90cc35068252e250629f94451e81d08911b54d0e859be58", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-673204ef2c1688d4", "cves": [], "html": "<p>修复某些 B-树比较操作符和支持函数的防泄漏属性标记（Tom Lane）<a href=\"https://postgr.es/c/39a96512b\">§</a> <a href=\"https://postgr.es/c/d9110d7e1\">§</a></p>\n<p>这使一些以前在存在安全屏障视图或行级安全时无法应用的优化得以应用。</p>", "text": "修复某些 B-树比较操作符和支持函数的防泄漏属性标记（Tom Lane）§ § 这使一些以前在存在安全屏障视图或行级安全时无法应用的优化得以应用。", "title": "修复某些 B-树比较操作符和支持函数的防泄漏属性标记", "commits": ["39a96512b", "d9110d7e1"], "section": "服务器 / 优化器", "category": "bugfix", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "4f9271a6b03657fdd224aeab9d52e211d130b7825902fe6e27cb9c08aec61819", "section_path": ["服务器", "优化器"], "commit_groups": [["39a96512b"], ["d9110d7e1"]], "identity_text": "Fix the leakproofness designations of some btree comparison operators and support functions (Tom Lane) This allows some optimizations that previously would not have been applied in the presence of security barrier views or row-level security.", "commit_aliases": ["39a96512b", "d9110d7e1"], "source_commits": ["39a96512b", "d9110d7e1"], "source_entry_id": "12.0/changes/033", "db_id": "b471b591f5ab3218b0ea561ae4b786b6", "patch_ids": ["7c7b87636294095c6ef5de38caa0d5c5", "959b73c70010df3dc63a9712e0e67d4b"], "statement_hash": "67fcbb083b5bfe6740997c18a0255f429d809d85ac67f1305303f26f2d3a7ab2", "relations": [], "version": "12.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-c1525b8983122dd3", "cves": [], "html": "<p>如果服务器构建时包含相应支持，则默认启用<a href=\"/docs/12/jit.html\" title=\"第 31 章 即时编译（JIT）\">即时</a>（<acronym>JIT</acronym>）编译（Andres Freund）<a href=\"https://postgr.es/c/1f7fc7670\">§</a></p>\n<p>请注意，默认构建不包含此支持，必须在配置构建时显式选择。</p>", "text": "如果服务器构建时包含相应支持，则默认启用即时（JIT）编译（Andres Freund）§ 请注意，默认构建不包含此支持，必须在配置构建时显式选择。", "title": "如果服务器构建时包含相应支持，则默认启用即时（JIT）编译", "commits": ["1f7fc7670"], "section": "服务器 / 一般性能", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "fb5adacb434e656868be5405f4e3388d7abeecfd76a09d3619ee07ace6b91902", "section_path": ["服务器", "一般性能"], "commit_groups": [["1f7fc7670"]], "identity_text": "Enable Just-in-Time (JIT) compilation by default, if the server has been built with support for it (Andres Freund) Note that this support is not built by default, but has to be selected explicitly while configuring the build.", "commit_aliases": ["1f7fc7670"], "source_commits": ["1f7fc7670"], "source_entry_id": "12.0/changes/034", "db_id": "4fc94c417861eade08914fa8ff4d7334", "patch_ids": ["97bc64dc7050290bd3e2f0626e17ee9e"], "statement_hash": "6550cccd54cfafe67e3be8a37984d70d1a3f60d7276366e96e0e5a5fc6d8e957", "relations": [], "version": "12.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-e674cbf7b73cd4f6", "cves": [], "html": "<p>加快关键字查找速度（John Naylor，Joerg Sonnenberger，Tom Lane）<a href=\"https://postgr.es/c/afb0d0712\">§</a> <a href=\"https://postgr.es/c/c64d0cd5c\">§</a></p>", "text": "加快关键字查找速度（John Naylor，Joerg Sonnenberger，Tom Lane）§ §", "title": "加快关键字查找速度", "commits": ["afb0d0712", "c64d0cd5c"], "section": "服务器 / 一般性能", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "2bd45e72812f16605270930458a4b481160c52036c2a3b38e4e104ef2d9452e8", "section_path": ["服务器", "一般性能"], "commit_groups": [["afb0d0712"], ["c64d0cd5c"]], "identity_text": "Speed up keyword lookup (John Naylor, Joerg Sonnenberger, Tom Lane)", "commit_aliases": ["afb0d0712", "c64d0cd5c"], "source_commits": ["afb0d0712", "c64d0cd5c"], "source_entry_id": "12.0/changes/035", "db_id": "448151831a0ba46fd1ed924df359038f", "patch_ids": ["4b03e6a5b223c217cc49d22f94ce596a", "8160758b3010e76b4610c28aa1e93227"], "statement_hash": "a5dd222691bf226cdaf2164f766805d93c7e30b8dfade4215c55173491894a97", "relations": [], "version": "12.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-a28e06158a58f553", "cves": [], "html": "<p>提高 <code>position()</code> 及相关函数中多字节字符的搜索性能（Heikki Linnakangas）<a href=\"https://postgr.es/c/9556aa01c\">§</a></p>", "text": "提高 position() 及相关函数中多字节字符的搜索性能（Heikki Linnakangas）§", "title": "提高 position() 及相关函数中多字节字符的搜索性能", "commits": ["9556aa01c"], "section": "服务器 / 一般性能", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "aa78371180ad2ae092799caa5899d99b119a4483531a2b9815b99db19dbceff8", "section_path": ["服务器", "一般性能"], "commit_groups": [["9556aa01c"]], "identity_text": "Improve search performance for multi-byte characters in position() and related functions (Heikki Linnakangas)", "commit_aliases": ["9556aa01c"], "source_commits": ["9556aa01c"], "source_entry_id": "12.0/changes/036", "db_id": "d4b2b3040bedc6a32857c31fa5f78091", "patch_ids": ["0578abcd72bed2342f78169cd1d110f4"], "statement_hash": "1e5323654bc6fc07ebfb917d4e4c4271db390ab6aa0a483cfc496bf2d6994e03", "relations": [], "version": "12.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-fc3d3e6b19ffd97c", "cves": [], "html": "<p>允许对经过 <a href=\"/docs/12/storage-toast.html\" title=\"69.2. TOAST\">TOAST 处理</a>的值仅解压所需的最小部分（Paul Ramsey）<a href=\"https://postgr.es/c/4d0e994ee\">§</a></p>\n<p>这对只需检查经过 TOAST 处理的字段起始部分的例程很有用。</p>", "text": "允许对经过 TOAST 处理的值仅解压所需的最小部分（Paul Ramsey）§ 这对只需检查经过 TOAST 处理的字段起始部分的例程很有用。", "title": "允许对经过 TOAST 处理的值仅解压所需的最小部分", "commits": ["4d0e994ee"], "section": "服务器 / 一般性能", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "e0922c70b992df09fddf5039db843775089ae018d1bdf56ee592f15e3463e124", "section_path": ["服务器", "一般性能"], "commit_groups": [["4d0e994ee"]], "identity_text": "Allow toasted values to be minimally decompressed (Paul Ramsey) This is useful for routines that only need to examine the initial portion of a toasted field.", "commit_aliases": ["4d0e994ee"], "source_commits": ["4d0e994ee"], "source_entry_id": "12.0/changes/037", "db_id": "345624ffa4832a444f8c2fedc9c0f93f", "patch_ids": ["37f5ef371a6550a7b730835cce670bcf"], "statement_hash": "05356919fa195edf518ec9066ae03dd0844fb7bb99c2984dca665e30d6ccd1c4", "relations": [], "version": "12.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-ec8a855a822bd70e", "cves": [], "html": "<p>允许 <a href=\"/docs/12/sql-altertable.html\" title=\"ALTER TABLE\"><code>ALTER TABLE ... SET NOT NULL</code></a> 避免不必要的表扫描（Sergei Kornilov）<a href=\"https://postgr.es/c/bbb96c370\">§</a></p>\n<p>当可以识别出表的列约束不允许空值时，就能进行此项优化。</p>", "text": "允许 ALTER TABLE ... SET NOT NULL 避免不必要的表扫描（Sergei Kornilov）§ 当可以识别出表的列约束不允许空值时，就能进行此项优化。", "title": "允许 ALTER TABLE ... SET NOT NULL 避免不必要的表扫描", "commits": ["bbb96c370"], "section": "服务器 / 一般性能", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "f5396e01349d131c3f8dd490e62bfc872facfcba767f5854948a29dd44b1f03c", "section_path": ["服务器", "一般性能"], "commit_groups": [["bbb96c370"]], "identity_text": "Allow ALTER TABLE ... SET NOT NULL to avoid unnecessary table scans (Sergei Kornilov) This can be optimized when the table's column constraints can be recognized as disallowing nulls.", "commit_aliases": ["bbb96c370"], "source_commits": ["bbb96c370"], "source_entry_id": "12.0/changes/038", "db_id": "b239f4d78fed50ae164bc8b29ac5a282", "patch_ids": ["8947f9552790133b36dd96320b18a574"], "statement_hash": "9fa7c7f1742350cc8ab2a63995f83403d4b4045b9fb5afc5bea6ef78fee166b7", "relations": [], "version": "12.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-a9555575d578d688", "cves": [], "html": "<p>会话时区为 <acronym>UTC</acronym> 时，允许使用 <code>ALTER TABLE ... SET DATA TYPE</code> 在 <code>timestamp</code> 和 <code>timestamptz</code> 之间转换，而无需重写表（Noah Misch）<a href=\"https://postgr.es/c/3c5926301\">§</a></p>\n<p>在 <acronym>UTC</acronym> 时区中，这两种数据类型是二进制兼容的。</p>", "text": "会话时区为 UTC 时，允许使用 ALTER TABLE ... SET DATA TYPE 在 timestamp 和 timestamptz 之间转换，而无需重写表（Noah Misch）§ 在 UTC 时区中，这两种数据类型是二进制兼容的。", "title": "会话时区为 UTC 时，允许使用 ALTER TABLE ... SET DATA TYPE 在 timestamp 和 timestamptz 之间转换，而无需重写表", "commits": ["3c5926301"], "section": "服务器 / 一般性能", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "4e582f1dc0678a19c215b2d719272959a80e8d0d7d7fb67e843db9e7e8308d40", "section_path": ["服务器", "一般性能"], "commit_groups": [["3c5926301"]], "identity_text": "Allow ALTER TABLE ... SET DATA TYPE changing between timestamp and timestamptz to avoid a table rewrite when the session time zone is UTC (Noah Misch) In the UTC time zone, these two data types are binary compatible.", "commit_aliases": ["3c5926301"], "source_commits": ["3c5926301"], "source_entry_id": "12.0/changes/039", "db_id": "d875677bd57c5ee856474fab7cf965fe", "patch_ids": ["fa097bef6cfc856d268e0267f286f344"], "statement_hash": "bd36582c7764d2261d841e8ff6d90961f0a878f207dd95b1e307dca2d5104df4", "relations": [], "version": "12.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-2b80ed21925fe5ed", "cves": [], "html": "<p>提高将字符串转换为 <code>int2</code> 或 <code>int4</code> 整数的速度（Andres Freund）<a href=\"https://postgr.es/c/86eaf208e\">§</a></p>", "text": "提高将字符串转换为 int2 或 int4 整数的速度（Andres Freund）§", "title": "提高将字符串转换为 int2 或 int4 整数的速度", "commits": ["86eaf208e"], "section": "服务器 / 一般性能", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "d3e70e8104bcaecc7923ab55fc85e54879bf741fdefb952fc7ffab149d954c5e", "section_path": ["服务器", "一般性能"], "commit_groups": [["86eaf208e"]], "identity_text": "Improve speed in converting strings to int2 or int4 integers (Andres Freund)", "commit_aliases": ["86eaf208e"], "source_commits": ["86eaf208e"], "source_entry_id": "12.0/changes/040", "db_id": "4b3e79ed3ab1f05a59eee4c6c0aecaa9", "patch_ids": ["9b38dc08a218cc0137f1e01299d7655e"], "statement_hash": "5abe0c13bed96461307c31396b67edb238475d3ec641105f7488505ad318ad18", "relations": [], "version": "12.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-0763102888c60d7f", "cves": [], "html": "<p>允许在 <a href=\"/docs/12/transaction-iso.html#XACT-SERIALIZABLE\" title=\"13.2.3. 可串行化隔离级别\"><code>SERIALIZABLE</code></a> 隔离模式下使用并行查询（Thomas Munro）<a href=\"https://postgr.es/c/bb16aba50\">§</a></p>\n<p>以前，在此模式下会禁用并行执行。</p>", "text": "允许在 SERIALIZABLE 隔离模式下使用并行查询（Thomas Munro）§ 以前，在此模式下会禁用并行执行。", "title": "允许在 SERIALIZABLE 隔离模式下使用并行查询", "commits": ["bb16aba50"], "section": "服务器 / 一般性能", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "adc3c5d47d569a62965aa6381108590e27df5809ef0859e7a49438708b576951", "section_path": ["服务器", "一般性能"], "commit_groups": [["bb16aba50"]], "identity_text": "Allow parallelized queries when in SERIALIZABLE isolation mode (Thomas Munro) Previously, parallelism was disabled when in this mode.", "commit_aliases": ["bb16aba50"], "source_commits": ["bb16aba50"], "source_entry_id": "12.0/changes/041", "db_id": "62108e68317d432553d2ab2ee4d44566", "patch_ids": ["2248332a0b5c2892320a051d8cc4ac60"], "statement_hash": "31591f86fb7298e1f7ca5fd202544c3f57fce074e471ee7469044b8ad25f5f0c", "relations": [], "version": "12.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-b0e61767c3781532", "cves": [], "html": "<p>使用 <code>pread()</code> 和 <code>pwrite()</code> 执行随机 I/O（Oskari Saarenmaa，Thomas Munro）<a href=\"https://postgr.es/c/3fd2a7932\">§</a> <a href=\"https://postgr.es/c/c24dcd0cf\">§</a></p>\n<p>这减少了 I/O 所需的系统调用次数。</p>", "text": "使用 pread() 和 pwrite() 执行随机 I/O（Oskari Saarenmaa，Thomas Munro）§ § 这减少了 I/O 所需的系统调用次数。", "title": "使用 pread() 和 pwrite() 执行随机 I/O", "commits": ["3fd2a7932", "c24dcd0cf"], "section": "服务器 / 一般性能", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "b9c60ab3b0cd9e006540ea1628cf34a9a05431679af1a37503d9a9cb2e8ca4e6", "section_path": ["服务器", "一般性能"], "commit_groups": [["3fd2a7932"], ["c24dcd0cf"]], "identity_text": "Use pread() and pwrite() for random I/O (Oskari Saarenmaa, Thomas Munro) This reduces the number of system calls required for I/O.", "commit_aliases": ["3fd2a7932", "c24dcd0cf"], "source_commits": ["3fd2a7932", "c24dcd0cf"], "source_entry_id": "12.0/changes/042", "db_id": "10357cfaf86516b870292936ef333cd9", "patch_ids": ["66525d2792afdf61f807fa224a1d3ace", "6ba16702bbe55a4ae71127dc4379ea32"], "statement_hash": "494b8684e3b7d112a4978a9502fc39a2b2045a98f47c2ad7a1f61b12b3b60317", "relations": [], "version": "12.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-6533482dc3cda7d8", "cves": [], "html": "<p>提高在 <span>FreeBSD</span> 上设置<a href=\"/docs/12/runtime-config-logging.html#GUC-UPDATE-PROCESS-TITLE\">进程标题</a>的速度（Thomas Munro）<a href=\"https://postgr.es/c/1bc180cd2\">§</a></p>", "text": "提高在 FreeBSD 上设置进程标题的速度（Thomas Munro）§", "title": "提高在 FreeBSD 上设置进程标题的速度", "commits": ["1bc180cd2"], "section": "服务器 / 一般性能", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "72dfbf60ef2957b1d30f1611a2828b7b40c2607ce23c02a6c59251471c7d4872", "section_path": ["服务器", "一般性能"], "commit_groups": [["1bc180cd2"]], "identity_text": "Improve the speed of setting the process title on FreeBSD (Thomas Munro)", "commit_aliases": ["1bc180cd2"], "source_commits": ["1bc180cd2"], "source_entry_id": "12.0/changes/043", "db_id": "a82ba96a23220ea967b3e6960e0a0cf1", "patch_ids": ["01da4673788fcbbcd6c2820f38a1b633"], "statement_hash": "b412bdcd7f1273db809adfeec2b013f78c9e2be6e5dadb9ffcd604efdd3a771e", "relations": [], "version": "12.0", "category_label": "性能改进", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-780f22017604e9a7", "cves": [], "html": "<p>允许仅记录一定比例事务中的语句（Adrien Nayrat）<a href=\"https://postgr.es/c/799e22034\">§</a></p>\n<p>这由参数<a href=\"/docs/12/runtime-config-logging.html#GUC-LOG-TRANSACTION-SAMPLE-RATE\">log_transaction_sample_rate</a>控制。</p>", "text": "允许仅记录一定比例事务中的语句（Adrien Nayrat）§ 这由参数log_transaction_sample_rate控制。", "title": "允许仅记录一定比例事务中的语句", "commits": ["799e22034"], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "045483befde32bcb6d7eaa5aac5e32da9b7f434c8fd6cb1d5da1c492ee76e77a", "section_path": ["服务器", "监控"], "commit_groups": [["799e22034"]], "identity_text": "Allow logging of statements from only a percentage of transactions (Adrien Nayrat) The parameter guc-log-transaction-sample-rate controls this.", "commit_aliases": ["799e22034"], "source_commits": ["799e22034"], "source_entry_id": "12.0/changes/044", "db_id": "415dc41fa2d12b800fd72fb1a75e370a", "patch_ids": ["41d79384e324ade946ea4f084e67cfc2"], "statement_hash": "80c5974184489007037b7f0032ee50f9071e90b8b8a767050b304ff9b478c534", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-2fb8977d18753f42", "cves": [], "html": "<p>为 <code>CREATE INDEX</code> 和 <code>REINDEX</code> 操作添加进度报告（Álvaro Herrera，Peter Eisentraut）<a href=\"https://postgr.es/c/ab0dfc961\">§</a> <a href=\"https://postgr.es/c/03f9e5cba\">§</a></p>\n<p>进度通过 <a href=\"/docs/12/progress-reporting.html#CREATE-INDEX-PROGRESS-REPORTING\" title=\"27.4.1. CREATE INDEX 进度报告\"><code>pg_stat_progress_create_index</code></a> 系统视图报告。</p>", "text": "为 CREATE INDEX 和 REINDEX 操作添加进度报告（Álvaro Herrera，Peter Eisentraut）§ § 进度通过 pg_stat_progress_create_index 系统视图报告。", "title": "为 CREATE INDEX 和 REINDEX 操作添加进度报告", "commits": ["03f9e5cba", "ab0dfc961"], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "a2f457fd002cd94586637fcf7c58835b3ab2ab57769f969fe368a545520657d1", "section_path": ["服务器", "监控"], "commit_groups": [["03f9e5cba"], ["ab0dfc961"]], "identity_text": "Add progress reporting to CREATE INDEX and REINDEX operations (Álvaro Herrera, Peter Eisentraut) Progress is reported in the pg_stat_progress_create_index system view.", "commit_aliases": ["03f9e5cba", "ab0dfc961"], "source_commits": ["03f9e5cba", "ab0dfc961"], "source_entry_id": "12.0/changes/045", "db_id": "0a212dcf127dad92cccda50c23eb7cab", "patch_ids": ["ab20fd2c9e90d5826dcba6a086dc7d27", "c4bf1c33f01c8b6416b576ec8c741bb7"], "statement_hash": "27444196cf096db9c267ac19c51fb7ff3b4c7efb6bce236e638d1201574ab1d8", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-d29b432d9f31a92e", "cves": [], "html": "<p>为 <code>CLUSTER</code> 和 <code>VACUUM FULL</code> 添加进度报告（Tatsuro Yamada）<a href=\"https://postgr.es/c/6f97457e0\">§</a></p>\n<p>进度通过 <a href=\"/docs/12/progress-reporting.html#CLUSTER-PROGRESS-REPORTING\" title=\"27.4.3. CLUSTER 进度报告\"><code>pg_stat_progress_cluster</code></a> 系统视图报告。</p>", "text": "为 CLUSTER 和 VACUUM FULL 添加进度报告（Tatsuro Yamada）§ 进度通过 pg_stat_progress_cluster 系统视图报告。", "title": "为 CLUSTER 和 VACUUM FULL 添加进度报告", "commits": ["6f97457e0"], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "265ed27964eecde25d4fd3e0ac89f0177e5c59f2705b93d467376b0d996bffdb", "section_path": ["服务器", "监控"], "commit_groups": [["6f97457e0"]], "identity_text": "Add progress reporting to CLUSTER and VACUUM FULL (Tatsuro Yamada) Progress is reported in the pg_stat_progress_cluster system view.", "commit_aliases": ["6f97457e0"], "source_commits": ["6f97457e0"], "source_entry_id": "12.0/changes/046", "db_id": "5206e103f3d2d185de2aca996a3231be", "patch_ids": ["40db4eb2a151c880ef5661f26d6319e8"], "statement_hash": "e0e109c12c8b2c92d152923807eb76d3224ad25b754af1b5e6d78a8c335f19c3", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-2740a4912dcc6faa", "cves": [], "html": "<p>为<a href=\"/docs/12/app-pgchecksums.html\" title=\"pg_checksums\"><span><span>pg_checksums</span></span></a>添加进度报告（Michael Banck，Bernd Helmle）<a href=\"https://postgr.es/c/280e5f140\">§</a></p>\n<p>可通过 <code>--progress</code> 选项启用此功能。</p>", "text": "为pg_checksums添加进度报告（Michael Banck，Bernd Helmle）§ 可通过 --progress 选项启用此功能。", "title": "为pg_checksums添加进度报告", "commits": ["280e5f140"], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "35cc89ea6eba378543fce2ab82ab9f7a50d2f14dfb626984d07abe38cf5e9cd4", "section_path": ["服务器", "监控"], "commit_groups": [["280e5f140"]], "identity_text": "Add progress reporting to app-pgchecksums (Michael Banck, Bernd Helmle) This is enabled with the option --progress.", "commit_aliases": ["280e5f140"], "source_commits": ["280e5f140"], "source_entry_id": "12.0/changes/047", "db_id": "81e212f8f48c7ef41fe4bee8b5931f68", "patch_ids": ["5d738eb9c2829749524ba230cd89ecb1"], "statement_hash": "115251588d9fbc3a9437da62726b553c93312c869752d31c122cb4a7d08d7b26", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-c1bc7e0236bdec47", "cves": [], "html": "<p>在 <code>pg_stat_database</code> 中添加校验和失败计数器（Magnus Hagander）<a href=\"https://postgr.es/c/6b9e875f7\">§</a></p>", "text": "在 pg_stat_database 中添加校验和失败计数器（Magnus Hagander）§", "title": "在 pg_stat_database 中添加校验和失败计数器", "commits": ["6b9e875f7"], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "f77513ee40eaddd1efacae03adbcdf10e1ba597265d5a1f57b6791c7249d2535", "section_path": ["服务器", "监控"], "commit_groups": [["6b9e875f7"]], "identity_text": "Add counter of checksum failures to pg_stat_database (Magnus Hagander)", "commit_aliases": ["6b9e875f7"], "source_commits": ["6b9e875f7"], "source_entry_id": "12.0/changes/048", "db_id": "05b34322a504973437ccd2e6567985c6", "patch_ids": ["91416e4d0051a84608f748533bb450e3"], "statement_hash": "372f8782adb777a6ebb6b7b5c7f852b5eb4ea7314a8a3db8cbd1e90ec87e34b1", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-1ebaaba25f394fb9", "cves": [], "html": "<p>在系统视图 <code>pg_stat_database</code> 中添加对全局对象的跟踪（Julien Rouhaud）<a href=\"https://postgr.es/c/77bd49adb\">§</a></p>\n<p>全局对象对应的 <a href=\"/docs/12/monitoring-stats.html#PG-STAT-DATABASE-VIEW\" title=\"表 27.12. pg_stat_database 视图\"><code>pg_stat_database</code></a>.<code>datid</code> 值显示为零。</p>", "text": "在系统视图 pg_stat_database 中添加对全局对象的跟踪（Julien Rouhaud）§ 全局对象对应的 pg_stat_database.datid 值显示为零。", "title": "在系统视图 pg_stat_database 中添加对全局对象的跟踪", "commits": ["77bd49adb"], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "2613db974cefcf7cfdcc1463d389a6a67b8c670b1b2097c5fc67c8a0eb197548", "section_path": ["服务器", "监控"], "commit_groups": [["77bd49adb"]], "identity_text": "Add tracking of global objects in system view pg_stat_database (Julien Rouhaud) Global objects are shown with a pg_stat_database.datid value of zero.", "commit_aliases": ["77bd49adb"], "source_commits": ["77bd49adb"], "source_entry_id": "12.0/changes/049", "db_id": "57fb3451093095301fb7d620d1b98ba8", "patch_ids": ["2caba8f45b1fc05e14ff2e2f658ab63f"], "statement_hash": "10f46b1042f7c151f7b8d11b12fc3b3671789446f809996c5926bee0371af2a0", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-04767aefdb4f4bd0", "cves": [], "html": "<p>添加列出归档目录内容的功能（Christoph Moench-Tegeder）<a href=\"https://postgr.es/c/c48101620\">§</a></p>\n<p>相应函数为 <a href=\"/docs/12/functions-admin.html#FUNCTIONS-ADMIN-GENFILE-TABLE\" title=\"表 9.94. 通用文件访问函数\"><code>pg_ls_archive_statusdir()</code></a>。</p>", "text": "添加列出归档目录内容的功能（Christoph Moench-Tegeder）§ 相应函数为 pg_ls_archive_statusdir()。", "title": "添加列出归档目录内容的功能", "commits": ["c48101620"], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "e6626f0bc2eb75191d4150b910839d61f290fd05e5fc97aeed2ce77019bdad02", "section_path": ["服务器", "监控"], "commit_groups": [["c48101620"]], "identity_text": "Add the ability to list the contents of the archive directory (Christoph Moench-Tegeder) The function is pg_ls_archive_statusdir().", "commit_aliases": ["c48101620"], "source_commits": ["c48101620"], "source_entry_id": "12.0/changes/050", "db_id": "44f59927c80c6ce19c09bcaad9809ed9", "patch_ids": ["5af7e24b12382abc45a0cfc198266ec6"], "statement_hash": "3822bf912dbbf53da6c73b7808ea45fd9806bc5416188304b8153e4035b1bb66", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-d81dcc440fc8183c", "cves": [], "html": "<p>添加列出临时目录内容的功能（Nathan Bossart）<a href=\"https://postgr.es/c/9cd92d1a3\">§</a></p>\n<p>相应函数 <a href=\"/docs/12/functions-admin.html#FUNCTIONS-ADMIN-GENFILE-TABLE\" title=\"表 9.94. 通用文件访问函数\"><code>pg_ls_tmpdir()</code></a> 允许选择性地指定表空间。</p>", "text": "添加列出临时目录内容的功能（Nathan Bossart）§ 相应函数 pg_ls_tmpdir() 允许选择性地指定表空间。", "title": "添加列出临时目录内容的功能", "commits": ["9cd92d1a3"], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "3269750cce0ea0d44364608e7db124f9609433d7350abc67fb1a48d320eac9c2", "section_path": ["服务器", "监控"], "commit_groups": [["9cd92d1a3"]], "identity_text": "Add the ability to list the contents of temporary directories (Nathan Bossart) The function, pg_ls_tmpdir(), optionally allows specification of a tablespace.", "commit_aliases": ["9cd92d1a3"], "source_commits": ["9cd92d1a3"], "source_entry_id": "12.0/changes/051", "db_id": "35d97650b69ee9e7b5e23634c5a04be2", "patch_ids": ["699b4ae99df4cc4a501b38e4e87d2215"], "statement_hash": "f099c2ec1d95df70dbf3ccf67c560399be4473d55fc818cdfbfa0769ba515bcb", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-93b26000ef0710c3", "cves": [], "html": "<p>在系统视图 <a href=\"/docs/12/monitoring-stats.html#PG-STAT-SSL-VIEW\" title=\"表 27.8. pg_stat_ssl 视图\"><code>pg_stat_ssl</code></a> 中添加客户端证书信息（Peter Eisentraut）<a href=\"https://postgr.es/c/f60a0e967\">§</a></p>\n<p>新增列为 <code>client_serial</code> 和 <code>issuer_dn</code>。为使含义更清楚，将 <code>clientdn</code> 列重命名为 <code>client_dn</code>。</p>", "text": "在系统视图 pg_stat_ssl 中添加客户端证书信息（Peter Eisentraut）§ 新增列为 client_serial 和 issuer_dn。为使含义更清楚，将 clientdn 列重命名为 client_dn。", "title": "在系统视图 pg_stat_ssl 中添加客户端证书信息", "commits": ["f60a0e967"], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "44df26b136ef8cc7e904f8d776e24411c961322afd36851b77fc6ce7e4c64aca", "section_path": ["服务器", "监控"], "commit_groups": [["f60a0e967"]], "identity_text": "Add information about the client certificate to the system view pg_stat_ssl (Peter Eisentraut) The new columns are client_serial and issuer_dn. Column clientdn has been renamed to client_dn for clarity.", "commit_aliases": ["f60a0e967"], "source_commits": ["f60a0e967"], "source_entry_id": "12.0/changes/052", "db_id": "6c72058028ea47317a98891f534ed8a7", "patch_ids": ["6cbb2d11b77e3d135899cee82c5c0707"], "statement_hash": "cc8cc192fbbbb01f24f535baed9ba4d2e7cc9d450fa006557e57e1e06b138580", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-3358c03ad5ed1dfa", "cves": [], "html": "<p>限制无特权用户在 <code>pg_stat_ssl</code> 中可见的行（Peter Eisentraut）<a href=\"https://postgr.es/c/f9692a769\">§</a></p>", "text": "限制无特权用户在 pg_stat_ssl 中可见的行（Peter Eisentraut）§", "title": "限制无特权用户在 pg_stat_ssl 中可见的行", "commits": ["f9692a769"], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "92840b7afa98b5608c5e2d906bedc4ea677be25d60eb1f3fefe9dce1e204774f", "section_path": ["服务器", "监控"], "commit_groups": [["f9692a769"]], "identity_text": "Restrict visibility of rows in pg_stat_ssl for unprivileged users (Peter Eisentraut)", "commit_aliases": ["f9692a769"], "source_commits": ["f9692a769"], "source_entry_id": "12.0/changes/053", "db_id": "bd65097d349eebb773c52bafa69d63ed", "patch_ids": ["837381846f978f398f7eb41dd00a24bf"], "statement_hash": "7f8058df3ddd9d7eb47bf87312e4f62e9ff0976aaa60cd34b3d7117a26d0a4b3", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-5859492d645fcf0a", "cves": [], "html": "<p>服务器启动时输出包含服务器版本号的日志消息（Christoph Berg）<a href=\"https://postgr.es/c/689d15e95\">§</a></p>", "text": "服务器启动时输出包含服务器版本号的日志消息（Christoph Berg）§", "title": "服务器启动时输出包含服务器版本号的日志消息", "commits": ["689d15e95"], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "30418669abaf3e5b618ec8a003fc8fe14bc0f42b52eeee48ce6b6eebc991278d", "section_path": ["服务器", "监控"], "commit_groups": [["689d15e95"]], "identity_text": "At server start, emit a log message including the server version number (Christoph Berg)", "commit_aliases": ["689d15e95"], "source_commits": ["689d15e95"], "source_entry_id": "12.0/changes/054", "db_id": "a9627a3a69f0173c6851453c39f87593", "patch_ids": ["f39c9a0453fb207aaa502b85d00220e1"], "statement_hash": "16f2ac3abb1b6738625dc61b54b7a1938a77e6cba2736afdf3c79ac94fc66399", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-d776884225d7ed24", "cves": [], "html": "<p>如果新连接立即被关闭，则避免记录 <span>“<span>incomplete startup packet</span>”</span>（Tom Lane）<a href=\"https://postgr.es/c/342cb650e\">§</a></p>\n<p>这避免了某些监控方式产生大量无用日志。</p>", "text": "如果新连接立即被关闭，则避免记录 “incomplete startup packet”（Tom Lane）§ 这避免了某些监控方式产生大量无用日志。", "title": "如果新连接立即被关闭，则避免记录 “incomplete startup packet”", "commits": ["342cb650e"], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "fd5d2b4e925e104ccf9a33d5516c564696d61aebc9d10062e52b58a49e7ce974", "section_path": ["服务器", "监控"], "commit_groups": [["342cb650e"]], "identity_text": "Prevent logging incomplete startup packet if a new connection is immediately closed (Tom Lane) This avoids log spam from certain forms of monitoring.", "commit_aliases": ["342cb650e"], "source_commits": ["342cb650e"], "source_entry_id": "12.0/changes/055", "db_id": "cbe93a53e08c62a783652a51c09b1d70", "patch_ids": ["e63562800703cb9347b14d671890e760"], "statement_hash": "30b9c613c04e8772efbec9f572fbbb05b0e6cd766da9c5cc894cdc7796a94956", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-4d5e3a53e267b169", "cves": [], "html": "<p>如果设置了<a href=\"/docs/12/runtime-config-logging.html#GUC-APPLICATION-NAME\">application_name</a>，则在<a href=\"/docs/12/runtime-config-logging.html#GUC-LOG-CONNECTIONS\">log_connections</a>日志消息中包含它（Don Seiler）<a href=\"https://postgr.es/c/8bddc8640\">§</a></p>", "text": "如果设置了application_name，则在log_connections日志消息中包含它（Don Seiler）§", "title": "如果设置了application_name，则在log_connections日志消息中包含它", "commits": ["8bddc8640"], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "2945374cc1bf50f76c3573d36b1c89edf29c573139510c4e6c6452160cf317ea", "section_path": ["服务器", "监控"], "commit_groups": [["8bddc8640"]], "identity_text": "Include the guc-application-name , if set, in guc-log-connections log messages (Don Seiler)", "commit_aliases": ["8bddc8640"], "source_commits": ["8bddc8640"], "source_entry_id": "12.0/changes/056", "db_id": "e70c44907c9b372f20073ff08874e948", "patch_ids": ["ea0e9adf5861d3437321d7f75009d0c7"], "statement_hash": "37a703b1ed774870d573e2ec990c95d768544734be6b4914df498b1334ae33f7", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-af30ad1a69ed7935", "cves": [], "html": "<p>如果设置了集群名称，则让 WAL 接收进程将其应用名称设置为该集群名称（Peter Eisentraut）<a href=\"https://postgr.es/c/6ae578a91\">§</a></p>", "text": "如果设置了集群名称，则让 WAL 接收进程将其应用名称设置为该集群名称（Peter Eisentraut）§", "title": "如果设置了集群名称，则让 WAL 接收进程将其应用名称设置为该集群名称", "commits": ["6ae578a91"], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "379fb44bec0c7de36e1ae469785e6299b112d05fc2ca21316382d73a4ca779a4", "section_path": ["服务器", "监控"], "commit_groups": [["6ae578a91"]], "identity_text": "Make the walreceiver set its application name to the cluster name, if set (Peter Eisentraut)", "commit_aliases": ["6ae578a91"], "source_commits": ["6ae578a91"], "source_entry_id": "12.0/changes/057", "db_id": "a6c731bfc4001afe7bcb4cc805a444cf", "patch_ids": ["503916f027de12bf9df164282ff77256"], "statement_hash": "06ccc866814448b07a282e2c44298bb5fe46a3b8f140d76610b3a325ab5820ee", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-5a6c8fc6d412e64c", "cves": [], "html": "<p>在 <a href=\"/docs/12/monitoring-stats.html#PG-STAT-REPLICATION-VIEW\" title=\"表 27.5. pg_stat_replication 视图\"><code>pg_stat_replication</code></a> 中添加最后收到的备库消息的时间戳（Lim Myungkyu）<a href=\"https://postgr.es/c/7fee252f6\">§</a></p>", "text": "在 pg_stat_replication 中添加最后收到的备库消息的时间戳（Lim Myungkyu）§", "title": "在 pg_stat_replication 中添加最后收到的备库消息的时间戳", "commits": ["7fee252f6"], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "3b081bf3364a93d93f4e2236d76d658d6461d3eb28c852cf7cfecccc654eaa61", "section_path": ["服务器", "监控"], "commit_groups": [["7fee252f6"]], "identity_text": "Add the timestamp of the last received standby message to pg_stat_replication (Lim Myungkyu)", "commit_aliases": ["7fee252f6"], "source_commits": ["7fee252f6"], "source_entry_id": "12.0/changes/058", "db_id": "03c13610f51cfa6eba4bbc060b5bf23e", "patch_ids": ["1d685cd690b627a7c7d1db51a6c53c59"], "statement_hash": "05c18481f5084affc880a97013075dea7a05e2a0422b06c609cf31b29664dd86", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-a76833bc31f00269", "cves": [], "html": "<p>为 <acronym>WAL</acronym> 段的 fsync 添加<a href=\"/docs/12/monitoring-stats.html#WAIT-EVENT-TABLE\" title=\"表 27.4. wait_event 描述\">等待事件</a>（Konstantin Knizhnik）<a href=\"https://postgr.es/c/c55de5e51\">§</a></p>", "text": "为 WAL 段的 fsync 添加等待事件（Konstantin Knizhnik）§", "title": "为 WAL 段的 fsync 添加等待事件", "commits": ["c55de5e51"], "section": "服务器 / 监控", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "c0338f32bb848503fae48c968325b47aa8d88e97fb38decfb096a52561bc575d", "section_path": ["服务器", "监控"], "commit_groups": [["c55de5e51"]], "identity_text": "Add a wait event for fsync of WAL segments (Konstantin Knizhnik)", "commit_aliases": ["c55de5e51"], "source_commits": ["c55de5e51"], "source_entry_id": "12.0/changes/059", "db_id": "8b832c17dfeb1f3396cab67dc2dc58a3", "patch_ids": ["6119e7c33c7980c6d37f37a44677e110"], "statement_hash": "545c9a81b3049bb5f66244fbb255c41d2882204ba2284f66117fde18dd6880a7", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-0d095859e382f0d0", "cves": [], "html": "<p>添加 <a href=\"/docs/12/gssapi-auth.html\" title=\"20.6. GSSAPI 认证\"><acronym>GSSAPI</acronym></a> 加密支持（Robbie Harwood，Stephen Frost）<a href=\"https://postgr.es/c/b0b39f72b\">§</a></p>\n<p>此特性允许在使用 GSSAPI 认证时加密 TCP/IP 连接，无需另外配置 SSL 等加密设施。为支持此功能，在 <a href=\"/docs/12/client-authentication.html#AUTH-PG-HBA-CONF\" title=\"20.1. pg_hba.conf 文件\"><code>pg_hba.conf</code></a> 中增加了 <code>hostgssenc</code> 和 <code>hostnogssenc</code> 记录类型，用于选择使用或不使用 GSSAPI 加密的连接，分别对应现有的 <code>hostssl</code> 和 <code>hostnossl</code> 记录类型。另外，还增加了 libpq 选项<a href=\"/docs/12/libpq.html#LIBPQ-CONNECT-GSSENCMODE\">gssencmode</a>和系统视图<a href=\"/docs/12/monitoring-stats.html#PG-STAT-GSSAPI-VIEW\" title=\"表 27.9. pg_stat_gssapi 视图\">pg_stat_gssapi</a>。</p>", "text": "添加 GSSAPI 加密支持（Robbie Harwood，Stephen Frost）§ 此特性允许在使用 GSSAPI 认证时加密 TCP/IP 连接，无需另外配置 SSL 等加密设施。为支持此功能，在 pg_hba.conf 中增加了 hostgssenc 和 hostnogssenc 记录类型，用于选择使用或不使用 GSSAPI 加密的连接，分别对应现有的 hostssl 和 hostnossl 记录类型。另外，还增加了 libpq 选项gssencmode和系统视图pg_stat_gssapi。", "title": "添加 GSSAPI 加密支持", "commits": ["b0b39f72b"], "section": "服务器 / Authentication", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.7", "source_hash": "8ca56df214042e5db6658fd58897b4ac6bfc47491c50d2704f4d03c76474ea2e", "section_path": ["服务器", "Authentication"], "commit_groups": [["b0b39f72b"]], "identity_text": "Add GSSAPI encryption support (Robbie Harwood, Stephen Frost) This feature allows TCP/IP connections to be encrypted when using GSSAPI authentication, without having to set up a separate encryption facility such as SSL. In support of this, add hostgssenc and hostnogssenc record types in pg_hba.conf for selecting connections that do or do not use GSSAPI encryption, corresponding to the existing hostssl and hostnossl record types. There is also a new libpq-connect-gssencmode libpq option, and a pg-stat-gssapi-view system view.", "commit_aliases": ["b0b39f72b"], "source_commits": ["b0b39f72b"], "source_entry_id": "12.0/changes/060", "db_id": "af2ced83486420278b0e6f7820bc37a6", "patch_ids": ["5553de51a5ca735981d2644ae3276226"], "statement_hash": "f5d2b4899a21138b80cd99e8b5275dc9b091add746da5505bb86fb88aa6f87fa", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-f898a00b6bfc35e2", "cves": [], "html": "<p>允许 <code>pg_hba.conf</code> 的 <a href=\"/docs/12/auth-cert.html\" title=\"20.12. 证书认证\"><code>clientcert</code></a> 选项检查数据库用户名是否与客户端证书的通用名匹配（Julian Markwort，Marius Timmer）<a href=\"https://postgr.es/c/0516c61b7\">§</a></p>\n<p>此项新检查通过 <code>clientcert=verify-full</code> 启用。</p>", "text": "允许 pg_hba.conf 的 clientcert 选项检查数据库用户名是否与客户端证书的通用名匹配（Julian Markwort，Marius Timmer）§ 此项新检查通过 clientcert=verify-full 启用。", "title": "允许 pg_hba.conf 的 clientcert 选项检查数据库用户名是否与客户端证书的通用名匹配", "commits": ["0516c61b7"], "section": "服务器 / Authentication", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.7", "source_hash": "c59b3cd60211972feae559f6be8fdb1ac04da95f1dcd9d7c5371f1142d352c20", "section_path": ["服务器", "Authentication"], "commit_groups": [["0516c61b7"]], "identity_text": "Allow the clientcert pg_hba.conf option to check that the database user name matches the client certificate's common name (Julian Markwort, Marius Timmer) This new check is enabled with clientcert=verify-full.", "commit_aliases": ["0516c61b7"], "source_commits": ["0516c61b7"], "source_entry_id": "12.0/changes/061", "db_id": "27a7574cf073db10069f0463775c530a", "patch_ids": ["ebffc016ccb6278823269fe2a6466cbf"], "statement_hash": "8a885ff8e7f8d76c95e5494ceeb901885e4db7507a136a4ed03dc8b8f989590f", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-6071405065297199", "cves": [], "html": "<p>允许使用 <acronym>DNS SRV</acronym> 记录发现 <a href=\"/docs/12/auth-ldap.html\" title=\"20.10. LDAP 认证\"><acronym>LDAP</acronym></a> 服务器（Thomas Munro）<a href=\"https://postgr.es/c/0f086f84a\">§</a></p>\n<p>这使指定 <code>ldapserver</code> 不再是必需的。仅当 <span>PostgreSQL</span> 使用 <span>OpenLDAP</span> 编译时才支持此功能。</p>", "text": "允许使用 DNS SRV 记录发现 LDAP 服务器（Thomas Munro）§ 这使指定 ldapserver 不再是必需的。仅当 PostgreSQL 使用 OpenLDAP 编译时才支持此功能。", "title": "允许使用 DNS SRV 记录发现 LDAP 服务器", "commits": ["0f086f84a"], "section": "服务器 / Authentication", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.7", "source_hash": "7844caa968664424292ca9f4b460419b21fa696fefffab6059c6bb998e807e01", "section_path": ["服务器", "Authentication"], "commit_groups": [["0f086f84a"]], "identity_text": "Allow discovery of an LDAP server using DNS SRV records (Thomas Munro) This avoids the requirement of specifying ldapserver. It is only supported if PostgreSQL is compiled with OpenLDAP.", "commit_aliases": ["0f086f84a"], "source_commits": ["0f086f84a"], "source_entry_id": "12.0/changes/062", "db_id": "2b70b87d5f54be7e84e063c844a8d8ed", "patch_ids": ["1c6e7e0d9f6c2a0c8152089c021a1cb2"], "statement_hash": "9bbc2a76430bcf54366fe0228f0f7cd03c6811c52e7c2a5a6745b87f3ac9b681", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-d63b0f2c75226c54", "cves": [], "html": "<p>添加使用<a href=\"/docs/12/app-pgchecksums.html\" title=\"pg_checksums\"><span><span>pg_checksums</span></span></a>启用/禁用集群校验和的功能（Michael Banck，Michaël Paquier）<a href=\"https://postgr.es/c/ed308d783\">§</a></p>\n<p>执行这些操作时必须关闭集群。</p>", "text": "添加使用pg_checksums启用/禁用集群校验和的功能（Michael Banck，Michaël Paquier）§ 执行这些操作时必须关闭集群。", "title": "添加使用pg_checksums启用/禁用集群校验和的功能", "commits": ["ed308d783"], "section": "服务器 / 服务器配置", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "1064e52d8a4fd448397dd404805794591a4e0e796604af38c7bce5bd07bd6b50", "section_path": ["服务器", "服务器配置"], "commit_groups": [["ed308d783"]], "identity_text": "Add ability to enable/disable cluster checksums using app-pgchecksums (Michael Banck, Michaël Paquier) The cluster must be shut down for these operations.", "commit_aliases": ["ed308d783"], "source_commits": ["ed308d783"], "source_entry_id": "12.0/changes/063", "db_id": "8c5ded51c7df5331fd8f2767cf9fb9db", "patch_ids": ["25adc6ae54cecdc0589e93ca56bb75a5"], "statement_hash": "038bf65264da295ea7994f884f5844dda66034c3e14e15df2c6f3e33a1c89ce9", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-226553203992bb65", "cves": [], "html": "<p>将<a href=\"/docs/12/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-COST-DELAY\">autovacuum_vacuum_cost_delay</a>的默认值降低到 2ms（Tom Lane）<a href=\"https://postgr.es/c/cbccac371\">§</a></p>\n<p>这使自动清理操作默认能够更快地执行。</p>", "text": "将autovacuum_vacuum_cost_delay的默认值降低到 2ms（Tom Lane）§ 这使自动清理操作默认能够更快地执行。", "title": "将autovacuum_vacuum_cost_delay的默认值降低到 2ms", "commits": ["cbccac371"], "section": "服务器 / 服务器配置", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "3254cf54eea919635f6e469dfc8297558b3150a4b6a4b744f71e239b830664f5", "section_path": ["服务器", "服务器配置"], "commit_groups": [["cbccac371"]], "identity_text": "Reduce the default value of guc-autovacuum-vacuum-cost-delay to 2ms (Tom Lane) This allows autovacuum operations to proceed faster by default.", "commit_aliases": ["cbccac371"], "source_commits": ["cbccac371"], "source_entry_id": "12.0/changes/064", "db_id": "79efda8d1b9e59331b52a091ce7ce3ae", "patch_ids": ["d784ca1bae1fd27cb21d999a9cfd6c7f"], "statement_hash": "678ee6fe6b818c27c73929bb5559d0b3c2d3e40226eba442e4062aae37b76df9", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-c6770f928987c3c6-1", "cves": [], "html": "<p>允许<a href=\"/docs/12/runtime-config-resource.html#GUC-VACUUM-COST-DELAY\">vacuum_cost_delay</a>接受小数值，以指定亚毫秒级延迟（Tom Lane）<a href=\"https://postgr.es/c/caf626b2c\">§</a></p>", "text": "允许vacuum_cost_delay接受小数值，以指定亚毫秒级延迟（Tom Lane）§", "title": "允许vacuum_cost_delay接受小数值，以指定亚毫秒级延迟", "commits": ["caf626b2c"], "section": "服务器 / 服务器配置", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "2690dfdeb6cd1016f05cefb591cedf1de056e40d71e39f8ea15f6d9f12226f73", "section_path": ["服务器", "服务器配置"], "commit_groups": [["caf626b2c"]], "identity_text": "Allow guc-vacuum-cost-delay to specify sub-millisecond delays, by accepting fractional values (Tom Lane)", "commit_aliases": ["caf626b2c"], "source_commits": ["caf626b2c"], "source_entry_id": "12.0/changes/065", "db_id": "d4e1bc8b17434d8d2d0469cdaa5d93ae", "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "statement_hash": "8f972da930c11e67d7de75301c6ee12d149c8f9ceaa62795c18bb66ec21bdfbb", "relations": [{"rule": 2, "type": "related", "target": "5e44aaefe9bbbd2a2e24dae94715b670", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}}, {"rule": 2, "type": "related", "target": "db6d9a82c11a3df46915bb93d1b3da44", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}}], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": [{"db_id": "db6d9a82c11a3df46915bb93d1b3da44", "kind": "related", "version": "12.0", "label": "12.0", "title": "允许时间类服务器参数使用微秒（us）单位", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}, "url": "/docs/compare/?release=12.0#12.0-c6770f928987c3c6-2", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8"}, {"db_id": "5e44aaefe9bbbd2a2e24dae94715b670", "kind": "related", "version": "12.0", "label": "12.0", "title": "允许为浮点服务器参数定义单位", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}, "url": "/docs/compare/?release=12.0#12.0-c6770f928987c3c6-3", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8"}]}, {"id": "12.0-c6770f928987c3c6-2", "cves": [], "html": "<p>允许时间类服务器参数使用<a href=\"/docs/12/runtime-config.html#CONFIG-SETTING\" title=\"19.1. 设置参数\">微秒</a>（<code>us</code>）单位（Tom Lane）<a href=\"https://postgr.es/c/caf626b2c\">§</a></p>", "text": "允许时间类服务器参数使用微秒（us）单位（Tom Lane）§", "title": "允许时间类服务器参数使用微秒（us）单位", "commits": ["caf626b2c"], "section": "服务器 / 服务器配置", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "e25b7020492383bf3922b8d9e1d8c7118caaba8d6c3bb00e48abd2653a962d69", "section_path": ["服务器", "服务器配置"], "commit_groups": [["caf626b2c"]], "identity_text": "Allow time-based server parameters to use units of microseconds (us) (Tom Lane)", "commit_aliases": ["caf626b2c"], "source_commits": ["caf626b2c"], "source_entry_id": "12.0/changes/066", "db_id": "db6d9a82c11a3df46915bb93d1b3da44", "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "statement_hash": "6c3eb4fc32386e66bfecee45a26115849e5fee7492e4e80845853e61eb2c4031", "relations": [{"rule": 2, "type": "related", "target": "5e44aaefe9bbbd2a2e24dae94715b670", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}}, {"rule": 2, "type": "related", "target": "d4e1bc8b17434d8d2d0469cdaa5d93ae", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}}], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": [{"db_id": "d4e1bc8b17434d8d2d0469cdaa5d93ae", "kind": "related", "version": "12.0", "label": "12.0", "title": "允许vacuum_cost_delay接受小数值，以指定亚毫秒级延迟", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}, "url": "/docs/compare/?release=12.0#12.0-c6770f928987c3c6-1", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8"}, {"db_id": "5e44aaefe9bbbd2a2e24dae94715b670", "kind": "related", "version": "12.0", "label": "12.0", "title": "允许为浮点服务器参数定义单位", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}, "url": "/docs/compare/?release=12.0#12.0-c6770f928987c3c6-3", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8"}]}, {"id": "12.0-7f95c5bd99d6632c", "cves": [], "html": "<p>允许整数服务器参数接受小数输入（Tom Lane）<a href=\"https://postgr.es/c/1a83a80a2\">§</a></p>\n<p>例如，虽然 <code>work_mem</code> 是整数参数，现在也允许执行 <code>SET work_mem = '30.1GB'</code>。完成所有必要的单位转换后，该值会被舍入为整数。</p>", "text": "允许整数服务器参数接受小数输入（Tom Lane）§ 例如，虽然 work_mem 是整数参数，现在也允许执行 SET work_mem = '30.1GB'。完成所有必要的单位转换后，该值会被舍入为整数。", "title": "允许整数服务器参数接受小数输入", "commits": ["1a83a80a2"], "section": "服务器 / 服务器配置", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "519c06f06b28116c71b97bc7d5e99471fff1dbf18302ff3f71bbae049e8e549e", "section_path": ["服务器", "服务器配置"], "commit_groups": [["1a83a80a2"]], "identity_text": "Allow fractional input for integer server parameters (Tom Lane) For example, SET work_mem = '30.1GB' is now allowed, even though work_mem is an integer parameter. The value will be rounded to an integer after any required units conversion.", "commit_aliases": ["1a83a80a2"], "source_commits": ["1a83a80a2"], "source_entry_id": "12.0/changes/067", "db_id": "8aa09d4dd770f19237d9e7632fc72fa7", "patch_ids": ["8ae14da49f7e6185fabe335e14f808d2"], "statement_hash": "b89bf5779c0583e9200012c2eb1178aea239919334a255df4fc6c199c836b73b", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-c6770f928987c3c6-3", "cves": [], "html": "<p>允许为浮点服务器参数定义单位（Tom Lane）<a href=\"https://postgr.es/c/caf626b2c\">§</a></p>", "text": "允许为浮点服务器参数定义单位（Tom Lane）§", "title": "允许为浮点服务器参数定义单位", "commits": ["caf626b2c"], "section": "服务器 / 服务器配置", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "de2ed6bd4c7c755e21e580415c61f81493b00fa67a4d2660524b028c59be9833", "section_path": ["服务器", "服务器配置"], "commit_groups": [["caf626b2c"]], "identity_text": "Allow units to be defined for floating-point server parameters (Tom Lane)", "commit_aliases": ["caf626b2c"], "source_commits": ["caf626b2c"], "source_entry_id": "12.0/changes/068", "db_id": "5e44aaefe9bbbd2a2e24dae94715b670", "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "statement_hash": "866faafd99339b6ba844c84a093621e36b329b00d2c5c1a8d52695e8ec025ff3", "relations": [{"rule": 2, "type": "related", "target": "d4e1bc8b17434d8d2d0469cdaa5d93ae", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}}, {"rule": 2, "type": "related", "target": "db6d9a82c11a3df46915bb93d1b3da44", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}}], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": [{"db_id": "db6d9a82c11a3df46915bb93d1b3da44", "kind": "related", "version": "12.0", "label": "12.0", "title": "允许时间类服务器参数使用微秒（us）单位", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}, "url": "/docs/compare/?release=12.0#12.0-c6770f928987c3c6-2", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8"}, {"db_id": "d4e1bc8b17434d8d2d0469cdaa5d93ae", "kind": "related", "version": "12.0", "label": "12.0", "title": "允许vacuum_cost_delay接受小数值，以指定亚毫秒级延迟", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}, "url": "/docs/compare/?release=12.0#12.0-c6770f928987c3c6-1", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8"}]}, {"id": "12.0-32ce4facf8d8733a", "cves": [], "html": "<p>添加服务器参数<a href=\"/docs/12/runtime-config-wal.html#GUC-WAL-RECYCLE\">wal_recycle</a>和<a href=\"/docs/12/runtime-config-wal.html#GUC-WAL-INIT-ZERO\">wal_init_zero</a>，以控制 <acronym>WAL</acronym> 文件的循环利用（Jerry Jelinek）<a href=\"https://postgr.es/c/475861b26\">§</a></p>\n<p>在 <span>ZFS</span> 等写时复制文件系统上，避免文件循环利用可能有益。</p>", "text": "添加服务器参数wal_recycle和wal_init_zero，以控制 WAL 文件的循环利用（Jerry Jelinek）§ 在 ZFS 等写时复制文件系统上，避免文件循环利用可能有益。", "title": "添加服务器参数wal_recycle和wal_init_zero，以控制 WAL 文件的循环利用", "commits": ["475861b26"], "section": "服务器 / 服务器配置", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "888f1b1da1e4f56c7a80cc712c87263a797260644efbb18ea783c0cea0f76778", "section_path": ["服务器", "服务器配置"], "commit_groups": [["475861b26"]], "identity_text": "Add guc-wal-recycle and guc-wal-init-zero server parameters to control WAL file recycling (Jerry Jelinek) Avoiding file recycling can be beneficial on copy-on-write file systems like ZFS.", "commit_aliases": ["475861b26"], "source_commits": ["475861b26"], "source_entry_id": "12.0/changes/069", "db_id": "6ceebd303b6dda10bbdcb13a671d8b10", "patch_ids": ["9dddae56375a73b1baae68b89c9ce750"], "statement_hash": "50e6dbf273776de336ca40301e7aac5262fd98e7bff2192ffff9876d23b16912", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-d69e960219843ac4", "cves": [], "html": "<p>添加服务器参数<a href=\"/docs/12/runtime-config-connection.html#GUC-TCP-USER-TIMEOUT\">tcp_user_timeout</a>，以控制服务器的 <acronym>TCP</acronym> 超时（Ryohei Nagaura）<a href=\"https://postgr.es/c/249d64999\">§</a></p>", "text": "添加服务器参数tcp_user_timeout，以控制服务器的 TCP 超时（Ryohei Nagaura）§", "title": "添加服务器参数tcp_user_timeout，以控制服务器的 TCP 超时", "commits": ["249d64999"], "section": "服务器 / 服务器配置", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "d642d1a19f9824d2e62898f0e17814a4cb34f76be94813f71432b7f7785bd6ee", "section_path": ["服务器", "服务器配置"], "commit_groups": [["249d64999"]], "identity_text": "Add server parameter guc-tcp-user-timeout to control the server's TCP timeout (Ryohei Nagaura)", "commit_aliases": ["249d64999"], "source_commits": ["249d64999"], "source_entry_id": "12.0/changes/070", "db_id": "0ed4ea34f97ff2c06b766fe41327709b", "patch_ids": ["e1d646e699a8d1ecb622399096f1c3c4"], "statement_hash": "69550559682b2c1fadc5c1b575f589bd0e59de100f3237ddc146f4856b272b5e", "relations": [{"rule": 2, "type": "related", "target": "6cdb02aaf10f70c32c4fa280b47ff16d", "evidence": {"same_day": true, "patch_ids": ["e1d646e699a8d1ecb622399096f1c3c4"], "ambiguous_patch_ids": ["e1d646e699a8d1ecb622399096f1c3c4"]}}], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": [{"db_id": "6cdb02aaf10f70c32c4fa280b47ff16d", "kind": "related", "version": "12.0", "label": "12.0", "title": "添加连接参数tcp_user_timeout，以控制 libpq 的 TCP 超时", "evidence": {"same_day": true, "patch_ids": ["e1d646e699a8d1ecb622399096f1c3c4"], "ambiguous_patch_ids": ["e1d646e699a8d1ecb622399096f1c3c4"]}, "url": "/docs/compare/?release=12.0#12.0-5629245fde067c8f", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.9"}]}, {"id": "12.0-8251ee2b4c82e125", "cves": [], "html": "<p>允许控制最低和最高 <acronym>SSL</acronym> 协议版本（Peter Eisentraut）<a href=\"https://postgr.es/c/e73e67c71\">§</a></p>\n<p>相应服务器参数为<a href=\"/docs/12/runtime-config-connection.html#GUC-SSL-MIN-PROTOCOL-VERSION\">ssl_min_protocol_version</a>和<a href=\"/docs/12/runtime-config-connection.html#GUC-SSL-MAX-PROTOCOL-VERSION\">ssl_max_protocol_version</a>。</p>", "text": "允许控制最低和最高 SSL 协议版本（Peter Eisentraut）§ 相应服务器参数为ssl_min_protocol_version和ssl_max_protocol_version。", "title": "允许控制最低和最高 SSL 协议版本", "commits": ["e73e67c71"], "section": "服务器 / 服务器配置", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "b83f119fe5cf55bf22c2973dcf6cb937c6c878cba6cbd24bc26d5c9b039643e7", "section_path": ["服务器", "服务器配置"], "commit_groups": [["e73e67c71"]], "identity_text": "Allow control of the minimum and maximum SSL protocol versions (Peter Eisentraut) The server parameters are guc-ssl-min-protocol-version and guc-ssl-max-protocol-version .", "commit_aliases": ["e73e67c71"], "source_commits": ["e73e67c71"], "source_entry_id": "12.0/changes/071", "db_id": "72432347b54b14a0933a07843e97957d", "patch_ids": ["f158393a9e51514af39526d0c8ad7439"], "statement_hash": "ccd535a31852c4e68c3a2f9d61e7dfa84379ebead5ca90e77b376a5de061e4a6", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-dcbc5fbe9d71a7f3", "cves": [], "html": "<p>添加服务器参数<a href=\"/docs/12/runtime-config-preset.html#GUC-SSL-LIBRARY\">ssl_library</a>，以报告服务器使用的 <acronym>SSL</acronym> 库版本（Peter Eisentraut）<a href=\"https://postgr.es/c/98efa76fe\">§</a></p>", "text": "添加服务器参数ssl_library，以报告服务器使用的 SSL 库版本（Peter Eisentraut）§", "title": "添加服务器参数ssl_library，以报告服务器使用的 SSL 库版本", "commits": ["98efa76fe"], "section": "服务器 / 服务器配置", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "c2d38fbbfd9920f316b900017a773ef99bbe6d7f6b99f440a334ae7dc4279ae4", "section_path": ["服务器", "服务器配置"], "commit_groups": [["98efa76fe"]], "identity_text": "Add server parameter guc-ssl-library to report the SSL library version used by the server (Peter Eisentraut)", "commit_aliases": ["98efa76fe"], "source_commits": ["98efa76fe"], "source_entry_id": "12.0/changes/072", "db_id": "3855af7c97ea2a4c8ecf1f4709516eed", "patch_ids": ["eb942472372f8731c6b5a502d6546104"], "statement_hash": "5513e47998c1c3747f905801d8e64cac0ceb1e4416901638b02f47805c5e8eed", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-7f5dc52498547575", "cves": [], "html": "<p>添加服务器参数<a href=\"/docs/12/runtime-config-resource.html#GUC-SHARED-MEMORY-TYPE\">shared_memory_type</a>，以控制所使用的共享内存类型（Andres Freund）<a href=\"https://postgr.es/c/f1bebef60\">§</a></p>\n<p>这允许在需要时选择 <span>System V</span> 共享内存。</p>", "text": "添加服务器参数shared_memory_type，以控制所使用的共享内存类型（Andres Freund）§ 这允许在需要时选择 System V 共享内存。", "title": "添加服务器参数shared_memory_type，以控制所使用的共享内存类型", "commits": ["f1bebef60"], "section": "服务器 / 服务器配置", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "342b81cd4c11499b931e9849dffcea0242c00c3c2e3486e07fefea2e5c9fe325", "section_path": ["服务器", "服务器配置"], "commit_groups": [["f1bebef60"]], "identity_text": "Add server parameter guc-shared-memory-type to control the type of shared memory to use (Andres Freund) This allows selection of System V shared memory, if desired.", "commit_aliases": ["f1bebef60"], "source_commits": ["f1bebef60"], "source_entry_id": "12.0/changes/073", "db_id": "0831c6f06b2e30b362d0bff986a78f99", "patch_ids": ["994f4d0dc536aef059cb0858c270b84b"], "statement_hash": "7ab2d8d4d055dad55dfda32512a034a11c742b2145c1baff7723a92bd60a6a19", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-411b6f3530d97654", "cves": [], "html": "<p>允许通过重新加载配置更改部分恢复参数（Peter Eisentraut）<a href=\"https://postgr.es/c/13b89f96d\">§</a></p>\n<p>这些参数是<a href=\"/docs/12/runtime-config-wal.html#GUC-ARCHIVE-CLEANUP-COMMAND\">archive_cleanup_command</a>、<a href=\"/docs/12/runtime-config-replication.html#GUC-PROMOTE-TRIGGER-FILE\">promote_trigger_file</a>、<a href=\"/docs/12/runtime-config-wal.html#GUC-RECOVERY-END-COMMAND\">recovery_end_command</a>和<a href=\"/docs/12/runtime-config-replication.html#GUC-RECOVERY-MIN-APPLY-DELAY\">recovery_min_apply_delay</a>。</p>", "text": "允许通过重新加载配置更改部分恢复参数（Peter Eisentraut）§ 这些参数是archive_cleanup_command、promote_trigger_file、recovery_end_command和recovery_min_apply_delay。", "title": "允许通过重新加载配置更改部分恢复参数", "commits": ["13b89f96d"], "section": "流复制和恢复", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.4", "source_hash": "2a83ae5bfcad1d15e2ccf9668bb66fcbbec3ab268131eae65759d5316a6fa1c0", "section_path": ["流复制和恢复"], "commit_groups": [["13b89f96d"]], "identity_text": "Allow some recovery parameters to be changed with reload (Peter Eisentraut) These parameters are guc-archive-cleanup-command , guc-promote-trigger-file , guc-recovery-end-command , and guc-recovery-min-apply-delay .", "commit_aliases": ["13b89f96d"], "source_commits": ["13b89f96d"], "source_entry_id": "12.0/changes/074", "db_id": "f0d2a9c31f9b66ea92cde646b41560c9", "patch_ids": ["764dced1bbe095afd84d849c1689c592"], "statement_hash": "5745e3c316fd4e3d043dd2f8e325a5f1eded27266a6109d0ec8ca729dd0e7dde", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-e6889333e94f5ba7", "cves": [], "html": "<p>允许按连接设置流复制超时（<a href=\"/docs/12/runtime-config-replication.html#GUC-WAL-SENDER-TIMEOUT\">wal_sender_timeout</a>）（Takayuki Tsunakawa）<a href=\"https://postgr.es/c/db361db2f\">§</a></p>\n<p>以前，只能在整个集群范围内设置此参数。</p>", "text": "允许按连接设置流复制超时（wal_sender_timeout）（Takayuki Tsunakawa）§ 以前，只能在整个集群范围内设置此参数。", "title": "允许按连接设置流复制超时（wal_sender_timeout）", "commits": ["db361db2f"], "section": "流复制和恢复", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.4", "source_hash": "73cb891faa3b4d5e289f8562568a817789f5ff3e222f27adf52f575c8f9c1b22", "section_path": ["流复制和恢复"], "commit_groups": [["db361db2f"]], "identity_text": "Allow the streaming replication timeout ( guc-wal-sender-timeout ) to be set per connection (Takayuki Tsunakawa) Previously, this could only be set cluster-wide.", "commit_aliases": ["db361db2f"], "source_commits": ["db361db2f"], "source_entry_id": "12.0/changes/075", "db_id": "d190a24af1facfd3a0c46a34fd4b6e9b", "patch_ids": ["eb35f3577d2db8b66c2f8fe236a131ab"], "statement_hash": "85d78e74f4a4b1b9d4606bab9af4727c94f64a0a9eae0611cdc0ccc98143d5d2", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-240e45971c6999c2", "cves": [], "html": "<p>添加函数 <a href=\"/docs/12/functions-admin.html#FUNCTIONS-RECOVERY-CONTROL\" title=\"9.26.4. 恢复控制函数\"><code>pg_promote()</code></a>，用于将备库提升为主库（Laurenz Albe，Michaël Paquier）<a href=\"https://postgr.es/c/10074651e\">§</a> <a href=\"https://postgr.es/c/8f045e242\">§</a></p>\n<p>以前，只能使用<a href=\"/docs/12/app-pg-ctl.html\" title=\"pg_ctl\"><span><span>pg_ctl</span></span></a>或创建触发文件来执行此操作。</p>", "text": "添加函数 pg_promote()，用于将备库提升为主库（Laurenz Albe，Michaël Paquier）§ § 以前，只能使用pg_ctl或创建触发文件来执行此操作。", "title": "添加函数 pg_promote()，用于将备库提升为主库", "commits": ["10074651e", "8f045e242"], "section": "流复制和恢复", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.4", "source_hash": "7f9dec9b05492de7714b0c3e7829609eafd23f5266be1bb5646ae0240b403115", "section_path": ["流复制和恢复"], "commit_groups": [["10074651e"], ["8f045e242"]], "identity_text": "Add function pg_promote() to promote standbys to primaries (Laurenz Albe, Michaël Paquier) Previously, this operation was only possible by using app-pg-ctl or creating a trigger file.", "commit_aliases": ["10074651e", "8f045e242"], "source_commits": ["10074651e", "8f045e242"], "source_entry_id": "12.0/changes/076", "db_id": "b8b8be7ae072899f68d955bcdac0179a", "patch_ids": ["08cbd0dbb1c3932643b16f9e63cee193", "e6f6b67b551bc833079ef9908c6aa944"], "statement_hash": "f196f8d9f0235d1494f7c1e77694dc9fecc55e1ba25aa09d069d6e462585e83b", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-767219be4482cb43", "cves": [], "html": "<p>允许复制复制槽（Masahiko Sawada）<a href=\"https://postgr.es/c/9f06d79ef\">§</a></p>\n<p>相应函数为 <a href=\"/docs/12/functions-admin.html#FUNCTIONS-REPLICATION-TABLE\" title=\"表 9.88. 复制 SQL 函数\"><code>pg_copy_physical_replication_slot()</code></a> 和 <code>pg_copy_logical_replication_slot()</code>。</p>", "text": "允许复制复制槽（Masahiko Sawada）§ 相应函数为 pg_copy_physical_replication_slot() 和 pg_copy_logical_replication_slot()。", "title": "允许复制复制槽", "commits": ["9f06d79ef"], "section": "流复制和恢复", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.4", "source_hash": "034b95e7d88de249a587c0752a8f6a7c8a0046d5b4867d46c6438d68b6b147f7", "section_path": ["流复制和恢复"], "commit_groups": [["9f06d79ef"]], "identity_text": "Allow replication slots to be copied (Masahiko Sawada) The functions for this are pg_copy_physical_replication_slot() and pg_copy_logical_replication_slot().", "commit_aliases": ["9f06d79ef"], "source_commits": ["9f06d79ef"], "source_entry_id": "12.0/changes/077", "db_id": "43f3b130c3c90e1b381fe871210be702", "patch_ids": ["92878d85de3bfd4e2a8ca04e98824f63"], "statement_hash": "ddaaa7ae5cc082014169ddd6779353655901d80cc04e3470f992be2d81765610", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-b73710273a308837", "cves": [], "html": "<p>不再将<a href=\"/docs/12/runtime-config-replication.html#GUC-MAX-WAL-SENDERS\">max_wal_senders</a>计入<a href=\"/docs/12/runtime-config-connection.html#GUC-MAX-CONNECTIONS\">max_connections</a>（Alexander Kukushkin）<a href=\"https://postgr.es/c/ea92368cd\">§</a></p>", "text": "不再将max_wal_senders计入max_connections（Alexander Kukushkin）§", "title": "不再将max_wal_senders计入max_connections", "commits": ["ea92368cd"], "section": "流复制和恢复", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.4", "source_hash": "bb84ecbf0ff7b79af61065c41f0c60acc8c49e822e604a1e4267582aed0673be", "section_path": ["流复制和恢复"], "commit_groups": [["ea92368cd"]], "identity_text": "Make guc-max-wal-senders not count as part of guc-max-connections (Alexander Kukushkin)", "commit_aliases": ["ea92368cd"], "source_commits": ["ea92368cd"], "source_entry_id": "12.0/changes/078", "db_id": "8a3c58a12fdfa0a97d3ee54218e243d2", "patch_ids": ["391d2e6c9c9246741baa88df509dc6a3"], "statement_hash": "1ea21739eef1aa772f6bda92d40c8effd9c9342b97ef2b40f31c3bac93bf1347", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-f33e599c42b4592f", "cves": [], "html": "<p>为<a href=\"/docs/12/runtime-config-wal.html#GUC-RECOVERY-TARGET-TIMELINE\">recovery_target_timeline</a>添加显式值 <code>current</code>（Peter Eisentraut）<a href=\"https://postgr.es/c/ff8530605\">§</a></p>", "text": "为recovery_target_timeline添加显式值 current（Peter Eisentraut）§", "title": "为recovery_target_timeline添加显式值 current", "commits": ["ff8530605"], "section": "流复制和恢复", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.4", "source_hash": "399d2d8367c349392c9596176ae5b3b1ec29b6e1f1a45e3c17ab013aa408f1ee", "section_path": ["流复制和恢复"], "commit_groups": [["ff8530605"]], "identity_text": "Add an explicit value of current for guc-recovery-target-timeline (Peter Eisentraut)", "commit_aliases": ["ff8530605"], "source_commits": ["ff8530605"], "source_entry_id": "12.0/changes/079", "db_id": "d964a64a19bae1dd6e9af96f46d5665b", "patch_ids": ["f48535760b949e5d2a65884cda8aa0d2"], "statement_hash": "cfa45bdf337886838c77989011b825ecf502ebbd2f19a8451e0a80d60a469e86", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-9731187641fa28d8", "cves": [], "html": "<p>如果<a href=\"/docs/12/sql-prepare-transaction.html\" title=\"PREPARE TRANSACTION\">两阶段事务</a>状态文件损坏，则使恢复失败（Michaël Paquier）<a href=\"https://postgr.es/c/8582b4d04\">§</a></p>\n<p>以前，会记录一条警告并继续恢复，可能导致该事务丢失。</p>", "text": "如果两阶段事务状态文件损坏，则使恢复失败（Michaël Paquier）§ 以前，会记录一条警告并继续恢复，可能导致该事务丢失。", "title": "如果两阶段事务状态文件损坏，则使恢复失败", "commits": ["8582b4d04"], "section": "流复制和恢复", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.4", "source_hash": "a48c96e23009aacaa4968eae7a3c995d5ce138caa21d7c90b291fc8a197f8be1", "section_path": ["流复制和恢复"], "commit_groups": [["8582b4d04"]], "identity_text": "Make recovery fail if a two-phase transaction status file is corrupt (Michaël Paquier) Previously, a warning was logged and recovery continued, allowing the transaction to be lost.", "commit_aliases": ["8582b4d04"], "source_commits": ["8582b4d04"], "source_entry_id": "12.0/changes/080", "db_id": "93c983372e45e7180e8bfbe83ed56ae0", "patch_ids": ["c9289fef90f130eda88fdbe1be027b16"], "statement_hash": "c2352ea8afe9fd0dab4c9353c201f4a81f3cfbc74e4fd3c56338125c52312206", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-784e12a2415d957b", "cves": [], "html": "<p>为<a href=\"/docs/12/sql-reindex.html\" title=\"REINDEX\"><span>REINDEX</span></a>添加 <code>CONCURRENTLY</code> 选项，以允许在不阻塞写入的情况下重建索引（Michaël Paquier，Andreas Karlsson，Peter Eisentraut）<a href=\"https://postgr.es/c/5dc92b844\">§</a></p>\n<p>这也可以通过<a href=\"/docs/12/app-reindexdb.html\" title=\"reindexdb\"><span><span>reindexdb</span></span></a>应用的 <code>--concurrently</code> 选项控制。</p>", "text": "为REINDEX添加 CONCURRENTLY 选项，以允许在不阻塞写入的情况下重建索引（Michaël Paquier，Andreas Karlsson，Peter Eisentraut）§ 这也可以通过reindexdb应用的 --concurrently 选项控制。", "title": "为REINDEX添加 CONCURRENTLY 选项，以允许在不阻塞写入的情况下重建索引", "commits": ["5dc92b844"], "section": "工具命令", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "6ed59bb3cf1bd4b8545c45e2394acd96e6875efa50f6d688f04038fb37ab68e9", "section_path": ["工具命令"], "commit_groups": [["5dc92b844"]], "identity_text": "Add sql-reindex CONCURRENTLY option to allow reindexing without locking out writes (Michaël Paquier, Andreas Karlsson, Peter Eisentraut) This is also controlled by the app-reindexdb application's --concurrently option.", "commit_aliases": ["5dc92b844"], "source_commits": ["5dc92b844"], "source_entry_id": "12.0/changes/081", "db_id": "97168a47138ede756653d93be8b161ea", "patch_ids": ["2c3964f4327298d9919d9a0ec6f933a0"], "statement_hash": "d6eb231d9adc736a381c5373a5da1b303ed889b4d147906a49cade2dc2f2df9c", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-5685d5ca00eed913", "cves": [], "html": "<p>添加对<a href=\"/docs/12/ddl-generated-columns.html\" title=\"5.3. 生成列\">生成列</a>的支持（Peter Eisentraut）<a href=\"https://postgr.es/c/fc22b6623\">§</a></p>\n<p>生成列的内容由表达式计算得出（可以引用同一表中的其他列），而非由 <code>INSERT</code> 或 <code>UPDATE</code> 命令指定。</p>", "text": "添加对生成列的支持（Peter Eisentraut）§ 生成列的内容由表达式计算得出（可以引用同一表中的其他列），而非由 INSERT 或 UPDATE 命令指定。", "title": "添加对生成列的支持", "commits": ["fc22b6623"], "section": "工具命令", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "b29e2d9651311913e69719d64ebe3ca26e0135b9d7e7da6c625b8a3915c9cd80", "section_path": ["工具命令"], "commit_groups": [["fc22b6623"]], "identity_text": "Add support for generated columns (Peter Eisentraut) The content of generated columns are computed from expressions (including references to other columns in the same table) rather than being specified by INSERT or UPDATE commands.", "commit_aliases": ["fc22b6623"], "source_commits": ["fc22b6623"], "source_entry_id": "12.0/changes/082", "db_id": "971ca537fa68c853221b2602a647a05a", "patch_ids": ["e82859c5bd79fcfd1a042c8a7eb47e10"], "statement_hash": "159041b428921603446e43fdc25751b10ff4e0bb9f0acab243b3561dcf15e876", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-a4689c48c7760a91", "cves": [], "html": "<p>为 <a href=\"/docs/12/sql-copy.html\" title=\"COPY\"><code>COPY FROM</code></a> 添加 <code>WHERE</code> 子句，以控制接受哪些行（Surafel Temesgen）<a href=\"https://postgr.es/c/31f381740\">§</a></p>\n<p>这提供了过滤传入数据的简单方法。</p>", "text": "为 COPY FROM 添加 WHERE 子句，以控制接受哪些行（Surafel Temesgen）§ 这提供了过滤传入数据的简单方法。", "title": "为 COPY FROM 添加 WHERE 子句，以控制接受哪些行", "commits": ["31f381740"], "section": "工具命令", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "d29f2dd00c7413ff097af7428c3d63722f2a2ed39760f1960b68eed9730d9108", "section_path": ["工具命令"], "commit_groups": [["31f381740"]], "identity_text": "Add a WHERE clause to COPY FROM to control which rows are accepted (Surafel Temesgen) This provides a simple way to filter incoming data.", "commit_aliases": ["31f381740"], "source_commits": ["31f381740"], "source_entry_id": "12.0/changes/083", "db_id": "e0089dbe8d8c093ef24f3e03d65acf4b", "patch_ids": ["c8f0dac4c78cde584336644c67237734"], "statement_hash": "7aaadbd4ed6a753d400f309d67b1e28fd1da426642da5f9480004b0bd785e1da", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-52e4ddc055449f41", "cves": [], "html": "<p>允许更灵活地添加枚举值（Andrew Dunstan，Tom Lane，Thomas Munro）<a href=\"https://postgr.es/c/212fab992\">§</a></p>\n<p>以前，不能在事务块中调用 <a href=\"/docs/12/sql-altertype.html\" title=\"ALTER TYPE\"><code>ALTER TYPE ... ADD VALUE</code></a>，除非它与创建该枚举类型的操作处于同一事务。现在可以在后续事务中调用，只要在提交之后才引用新的枚举值即可。</p>", "text": "允许更灵活地添加枚举值（Andrew Dunstan，Tom Lane，Thomas Munro）§ 以前，不能在事务块中调用 ALTER TYPE ... ADD VALUE，除非它与创建该枚举类型的操作处于同一事务。现在可以在后续事务中调用，只要在提交之后才引用新的枚举值即可。", "title": "允许更灵活地添加枚举值", "commits": ["212fab992"], "section": "工具命令", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "21db521cba13b8d8b8283fbd50ff65039558b44f8018eb73076c41e7a538bcbf", "section_path": ["工具命令"], "commit_groups": [["212fab992"]], "identity_text": "Allow enumerated values to be added more flexibly (Andrew Dunstan, Tom Lane, Thomas Munro) Previously, ALTER TYPE ... ADD VALUE could not be called in a transaction block, unless it was part of the same transaction that created the enumerated type. Now it can be called in a later transaction, so long as the new enumerated value is not referenced until after it is committed.", "commit_aliases": ["212fab992"], "source_commits": ["212fab992"], "source_entry_id": "12.0/changes/084", "db_id": "2ee1384c618e549806524dd7b5a4f182", "patch_ids": ["0ee4819da54677f371325ce42f1a5e5a"], "statement_hash": "28d69c7eb3b460af932b8618bc1c9c6be57991e9c4e678e5ede36b4bf9a99bd0", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-a4e2dbc3d880fbd6", "cves": [], "html": "<p>添加结束当前事务并开始新事务的命令（Peter Eisentraut）<a href=\"https://postgr.es/c/280a408b4\">§</a></p>\n<p>这些命令为 <a href=\"/docs/12/sql-commit.html\" title=\"COMMIT\"><code>COMMIT AND CHAIN</code></a> 和 <a href=\"/docs/12/sql-rollback.html\" title=\"ROLLBACK\"><code>ROLLBACK AND CHAIN</code></a>。</p>", "text": "添加结束当前事务并开始新事务的命令（Peter Eisentraut）§ 这些命令为 COMMIT AND CHAIN 和 ROLLBACK AND CHAIN。", "title": "添加结束当前事务并开始新事务的命令", "commits": ["280a408b4"], "section": "工具命令", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "8f55895cecb88d91b6c0b18934d0fe68851e9e9b0cbfa71cd8372fcd1e547f70", "section_path": ["工具命令"], "commit_groups": [["280a408b4"]], "identity_text": "Add commands to end a transaction and start a new one (Peter Eisentraut) The commands are COMMIT AND CHAIN and ROLLBACK AND CHAIN.", "commit_aliases": ["280a408b4"], "source_commits": ["280a408b4"], "source_entry_id": "12.0/changes/085", "db_id": "a14d1a56f35bb27bf2b01ce925ba5c7b", "patch_ids": ["0ade7c7cc2645cf9a8789fb91fe96700"], "statement_hash": "16cfa087a4d24ecc172e4bd60ad79c925124cc56a6cd24529d47819202b26a1e", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-16a9d353d1913ddc", "cves": [], "html": "<p>为<a href=\"/docs/12/sql-vacuum.html\" title=\"VACUUM\"><span>VACUUM</span></a>和 <code>CREATE TABLE</code> 添加选项，以阻止 <code>VACUUM</code> 截断尾部空页面（Takayuki Tsunakawa）<a href=\"https://postgr.es/c/119dcfad9\">§</a> <a href=\"https://postgr.es/c/b84dbc8eb\">§</a></p>\n<p>这些选项是 <code>vacuum_truncate</code> 和 <code>toast.vacuum_truncate</code>。使用这些选项可降低 <code>VACUUM</code> 的锁定要求，但会使其无法将磁盘空间归还给操作系统。</p>", "text": "为VACUUM和 CREATE TABLE 添加选项，以阻止 VACUUM 截断尾部空页面（Takayuki Tsunakawa）§ § 这些选项是 vacuum_truncate 和 toast.vacuum_truncate。使用这些选项可降低 VACUUM 的锁定要求，但会使其无法将磁盘空间归还给操作系统。", "title": "为VACUUM和 CREATE TABLE 添加选项，以阻止 VACUUM 截断尾部空页面", "commits": ["119dcfad9", "b84dbc8eb"], "section": "工具命令", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "143cf3dc4e998e758dabde26fe7fb1012080e0ad17beac13ca5886b55fe74e00", "section_path": ["工具命令"], "commit_groups": [["119dcfad9"], ["b84dbc8eb"]], "identity_text": "Add sql-vacuum and CREATE TABLE options to prevent VACUUM from truncating trailing empty pages (Takayuki Tsunakawa) These options are vacuum_truncate and toast.vacuum_truncate. Use of these options reduces VACUUM's locking requirements, but prevents returning disk space to the operating system.", "commit_aliases": ["119dcfad9", "b84dbc8eb"], "source_commits": ["119dcfad9", "b84dbc8eb"], "source_entry_id": "12.0/changes/086", "db_id": "61cd4409eeeca7af348982e5a567bf1f", "patch_ids": ["6a6f2b32196321fe18b479d0f5bcb046", "8155682522d931432135ba58049cc58e"], "statement_hash": "a9bf550bdeb6f6cc1070bbeea83a239070a13a1036932c83aaa7f7c317727232", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-b3b61fef9eb963ab", "cves": [], "html": "<p>允许 <code>VACUUM</code> 跳过索引清理（Masahiko Sawada）<a href=\"https://postgr.es/c/a96c41fee\">§</a> <a href=\"https://postgr.es/c/ce59b75d4\">§</a></p>\n<p>此更改添加了 <code>VACUUM</code> 命令选项 <code>INDEX_CLEANUP</code>，以及表存储选项 <code>vacuum_index_cleanup</code>。使用此选项会降低空间回收能力，并可能导致索引膨胀，但在主要目标是冻结旧元组时很有帮助。</p>", "text": "允许 VACUUM 跳过索引清理（Masahiko Sawada）§ § 此更改添加了 VACUUM 命令选项 INDEX_CLEANUP，以及表存储选项 vacuum_index_cleanup。使用此选项会降低空间回收能力，并可能导致索引膨胀，但在主要目标是冻结旧元组时很有帮助。", "title": "允许 VACUUM 跳过索引清理", "commits": ["a96c41fee", "ce59b75d4"], "section": "工具命令", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "0f145c5e9dd8b4417711b4492cbb467c3de909783e566cfc2c8d9c1061aeecd4", "section_path": ["工具命令"], "commit_groups": [["a96c41fee"], ["ce59b75d4"]], "identity_text": "Allow VACUUM to skip index cleanup (Masahiko Sawada) This change adds a VACUUM command option INDEX_CLEANUP as well as a table storage option vacuum_index_cleanup. Use of this option reduces the ability to reclaim space and can lead to index bloat, but it is helpful when the main goal is to freeze old tuples.", "commit_aliases": ["a96c41fee", "ce59b75d4"], "source_commits": ["a96c41fee", "ce59b75d4"], "source_entry_id": "12.0/changes/087", "db_id": "417b9685418f295cf1432c95541c791a", "patch_ids": ["0b47a0e9b698cc1e70f50117c84e76c7", "d606d7e6d766ba8f76fe2c0db198f753"], "statement_hash": "91f1ba5e64b41cc96573add4f2f437b6c815f662947d9ddd2239e4cf6faf5462", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-6d3b88884ea80785", "cves": [], "html": "<p>添加跳过无法立即锁定的表上的 <code>VACUUM</code> 和 <code>ANALYZE</code> 操作的功能（Nathan Bossart）<a href=\"https://postgr.es/c/803b1301e\">§</a></p>\n<p>此选项名为 <code>SKIP_LOCKED</code>。</p>", "text": "添加跳过无法立即锁定的表上的 VACUUM 和 ANALYZE 操作的功能（Nathan Bossart）§ 此选项名为 SKIP_LOCKED。", "title": "添加跳过无法立即锁定的表上的 VACUUM 和 ANALYZE 操作的功能", "commits": ["803b1301e"], "section": "工具命令", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "3a82679f76f36d12f73477d4a31918b0137729172583d5b688327e47593494c9", "section_path": ["工具命令"], "commit_groups": [["803b1301e"]], "identity_text": "Add the ability to skip VACUUM and ANALYZE operations on tables that cannot be locked immediately (Nathan Bossart) This option is called SKIP_LOCKED.", "commit_aliases": ["803b1301e"], "source_commits": ["803b1301e"], "source_entry_id": "12.0/changes/088", "db_id": "5892f7709fa647114b11b37b119cd3bb", "patch_ids": ["0b7291cf513a62449ef3411f7a64e1e4"], "statement_hash": "d17ae89e85f3b8ef1357842fc2c85c8d9e25f09e9ac254cc2eab9c2a0974b58e", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-968809f59b50a401", "cves": [], "html": "<p>允许为 <code>VACUUM</code> 和 <code>ANALYZE</code> 的选项指定可选的布尔参数（Masahiko Sawada）<a href=\"https://postgr.es/c/41b54ba78\">§</a></p>", "text": "允许为 VACUUM 和 ANALYZE 的选项指定可选的布尔参数（Masahiko Sawada）§", "title": "允许为 VACUUM 和 ANALYZE 的选项指定可选的布尔参数", "commits": ["41b54ba78"], "section": "工具命令", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "7cefaff861cf969b6681455313a1df8c7289abd9fab76294aea1f96b6c00cb19", "section_path": ["工具命令"], "commit_groups": [["41b54ba78"]], "identity_text": "Allow VACUUM and ANALYZE to take optional Boolean argument specifications (Masahiko Sawada)", "commit_aliases": ["41b54ba78"], "source_commits": ["41b54ba78"], "source_entry_id": "12.0/changes/089", "db_id": "87d13abad9624eef466679a3aa64df96", "patch_ids": ["9c9564d61c14a6d10430acbeb6815568"], "statement_hash": "9fa5caa402b284821873563842b08bcd1731bc6792d8a0a43e49fcee7056728b", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-541043e35d82519b", "cves": [], "html": "<p>防止<a href=\"/docs/12/sql-truncate.html\" title=\"TRUNCATE\"><span>TRUNCATE</span></a>、<code>VACUUM</code> 和 <code>ANALYZE</code> 对用户没有权限的表请求锁（Michaël Paquier）<a href=\"https://postgr.es/c/f841ceb26\">§</a> <a href=\"https://postgr.es/c/a556549d7\">§</a></p>\n<p>这可防止未经授权的锁定干扰用户查询。</p>", "text": "防止TRUNCATE、VACUUM 和 ANALYZE 对用户没有权限的表请求锁（Michaël Paquier）§ § 这可防止未经授权的锁定干扰用户查询。", "title": "防止TRUNCATE、VACUUM 和 ANALYZE 对用户没有权限的表请求锁", "commits": ["a556549d7", "f841ceb26"], "section": "工具命令", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "b9bc8a580f6847679c361f2774a3deed6301a4eee3ec3fd13ff8278027cd2ee3", "section_path": ["工具命令"], "commit_groups": [["a556549d7"], ["f841ceb26"]], "identity_text": "Prevent sql-truncate , VACUUM and ANALYZE from requesting a lock on tables for which the user lacks permission (Michaël Paquier) This prevents unauthorized locking, which could interfere with user queries.", "commit_aliases": ["a556549d7", "f841ceb26"], "source_commits": ["a556549d7", "f841ceb26"], "source_entry_id": "12.0/changes/090", "db_id": "d54090a6696d40bd87dca7b3990ce11c", "patch_ids": ["6076dce12615d960dc7eee02c48e2acb", "6d5f6b24295794782cd835508d31a426"], "statement_hash": "a62cbf388f97cf388b5843e28b1d3b4d4ea49dd39f3c381786a18a173247e92a", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-387c047159bfc04d", "cves": [], "html": "<p>为<a href=\"/docs/12/sql-explain.html\" title=\"EXPLAIN\"><span>EXPLAIN</span></a>添加 <code>SETTINGS</code> 选项，以输出非默认的优化器设置（Tomas Vondra）<a href=\"https://postgr.es/c/ea569d64a\">§</a></p>\n<p>使用<a href=\"/docs/12/auto-explain.html\" title=\"F.4. auto_explain\">auto_explain</a>时，也可通过设置 <code>auto_explain.log_settings</code> 获取这些输出。</p>", "text": "为EXPLAIN添加 SETTINGS 选项，以输出非默认的优化器设置（Tomas Vondra）§ 使用auto_explain时，也可通过设置 auto_explain.log_settings 获取这些输出。", "title": "为EXPLAIN添加 SETTINGS 选项，以输出非默认的优化器设置", "commits": ["ea569d64a"], "section": "工具命令", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "1e8e1aed689d80fac047cd7c8fb4dece2e426a6b36c096a64d7041676a1704a6", "section_path": ["工具命令"], "commit_groups": [["ea569d64a"]], "identity_text": "Add sql-explain option SETTINGS to output non-default optimizer settings (Tomas Vondra) This output can also be obtained when using auto-explain by setting auto_explain.log_settings.", "commit_aliases": ["ea569d64a"], "source_commits": ["ea569d64a"], "source_entry_id": "12.0/changes/091", "db_id": "7feb863bb9a0613cc56c913b21e2415e", "patch_ids": ["4dbd6a7fb3c02da3576376a2152101a3"], "statement_hash": "391ad07e182123bd9f313dc610184988e18029a019f0df48fbf0241303a04ef4", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-9b2e7121ea3de49d", "cves": [], "html": "<p>为<a href=\"/docs/12/sql-createaggregate.html\" title=\"CREATE AGGREGATE\"><span>CREATE AGGREGATE</span></a>添加 <code>OR REPLACE</code> 选项（Andrew Gierth）<a href=\"https://postgr.es/c/01bde4fa4\">§</a></p>", "text": "为CREATE AGGREGATE添加 OR REPLACE 选项（Andrew Gierth）§", "title": "为CREATE AGGREGATE添加 OR REPLACE 选项", "commits": ["01bde4fa4"], "section": "工具命令", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "5a2330172f1318dec18a01e910413f0082ffd74a00844115c8e027bf5512d9b0", "section_path": ["工具命令"], "commit_groups": [["01bde4fa4"]], "identity_text": "Add OR REPLACE option to sql-createaggregate (Andrew Gierth)", "commit_aliases": ["01bde4fa4"], "source_commits": ["01bde4fa4"], "source_entry_id": "12.0/changes/092", "db_id": "258b3c97a0fb7129c23e0683c0b310f1", "patch_ids": ["2aa93a2b01ba52c6d2b51d2e9e328fb1"], "statement_hash": "979cb97ac49d6d9ea8b4d1da776a921f1c1e28f804aaa2735aebc168e64c5f16", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-ccca294d2a438891", "cves": [], "html": "<p>允许使用<a href=\"/docs/12/sql-altertable.html\" title=\"ALTER TABLE\"><span>ALTER TABLE</span></a>修改系统目录的选项（Peter Eisentraut）<a href=\"https://postgr.es/c/590a87025\">§</a></p>\n<p>现在支持修改目录的 <code>reloptions</code> 和自动清理设置。（仍然需要设置<a href=\"/docs/12/runtime-config-developer.html#GUC-ALLOW-SYSTEM-TABLE-MODS\">allow_system_table_mods</a>。）</p>", "text": "允许使用ALTER TABLE修改系统目录的选项（Peter Eisentraut）§ 现在支持修改目录的 reloptions 和自动清理设置。（仍然需要设置allow_system_table_mods。）", "title": "允许使用ALTER TABLE修改系统目录的选项", "commits": ["590a87025"], "section": "工具命令", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "483d7311c17abe10e4ff2a45ee3948845eddaea7660d15bad8a1827210664fbd", "section_path": ["工具命令"], "commit_groups": [["590a87025"]], "identity_text": "Allow modifications of system catalogs' options using sql-altertable (Peter Eisentraut) Modifications of catalogs' reloptions and autovacuum settings are now supported. (Setting guc-allow-system-table-mods is still required.)", "commit_aliases": ["590a87025"], "source_commits": ["590a87025"], "source_entry_id": "12.0/changes/093", "db_id": "fd48d31ac0ebfc7bb9b1f15f4fbf1de7", "patch_ids": ["9e994931b0e3403dacb7a5964faf7938"], "statement_hash": "abc0d25d4d39e2cff2d1ac1061462ab6bfa7406104223647aa2074445c8f85ee", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-3c8c98d7136d6a71", "cves": [], "html": "<p>为外键选择默认约束名时，使用所有键列的名称（Peter Eisentraut）<a href=\"https://postgr.es/c/f177660ab\">§</a></p>\n<p>以前，约束名中只包含第一个列名，导致多列外键存在歧义。</p>", "text": "为外键选择默认约束名时，使用所有键列的名称（Peter Eisentraut）§ 以前，约束名中只包含第一个列名，导致多列外键存在歧义。", "title": "为外键选择默认约束名时，使用所有键列的名称", "commits": ["f177660ab"], "section": "工具命令", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "87c8b8f18426c49f52f875e3bf6605c391d6144d5383531c0ff69c1ce8040beb", "section_path": ["工具命令"], "commit_groups": [["f177660ab"]], "identity_text": "Use all key columns' names when selecting default constraint names for foreign keys (Peter Eisentraut) Previously, only the first column name was included in the constraint name, resulting in ambiguity for multi-column foreign keys.", "commit_aliases": ["f177660ab"], "source_commits": ["f177660ab"], "source_entry_id": "12.0/changes/094", "db_id": "455226498f3c142a45e920cfdf26e714", "patch_ids": ["2d7b7e41fd4f7a93160b2ba646e90f3b"], "statement_hash": "a7c1e5fe43b1fdbfc6a9463df4ef7029e84bcc4627d7d3a1b4cebbfd47bdf5fc", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-cb0ad7e2ae64c744", "cves": [], "html": "<p>更新各项 Unicode 相关信息，使其与 Unicode 12.1.0 一致（Peter Eisentraut）<a href=\"https://postgr.es/c/d8594d123\">§</a> <a href=\"https://postgr.es/c/82be666ee\">§</a></p>\n<p>例如，这修复了 <span>psql</span> 对包含组合字符的输出进行错误排版的情况。</p>", "text": "更新各项 Unicode 相关信息，使其与 Unicode 12.1.0 一致（Peter Eisentraut）§ § 例如，这修复了 psql 对包含组合字符的输出进行错误排版的情况。", "title": "更新各项 Unicode 相关信息，使其与 Unicode 12.1.0 一致", "commits": ["82be666ee", "d8594d123"], "section": "数据类型", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.6", "source_hash": "bf0728823c4998a1356a8e04f1524aa468a2a83f8f4ad6219c825d9e336b6253", "section_path": ["数据类型"], "commit_groups": [["82be666ee"], ["d8594d123"]], "identity_text": "Update assorted knowledge about Unicode to match Unicode 12.1.0 (Peter Eisentraut) This fixes, for example, cases where psql would misformat output involving combining characters.", "commit_aliases": ["82be666ee", "d8594d123"], "source_commits": ["82be666ee", "d8594d123"], "source_entry_id": "12.0/changes/095", "db_id": "75385fd3f66a492adb099e414ac96aff", "patch_ids": ["14e2d2cacd913383bdb43221f070c3c0", "a76c027afa5456955d3b668c961ee892"], "statement_hash": "778adc2505ad96f890d458cbb14d0e573c981e85c0a42808f5a9d37658571650", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-275a77789f3c2226", "cves": [], "html": "<p>更新 Snowball 词干提取词典，支持新的语言（Arthur Zakirov）<a href=\"https://postgr.es/c/fd582317e\">§</a></p>\n<p>这为<a href=\"/docs/12/textsearch.html\" title=\"第 12 章 全文检索\">全文检索</a>添加了阿拉伯语、印度尼西亚语、爱尔兰语、立陶宛语、尼泊尔语和泰米尔语的词干提取支持。</p>", "text": "更新 Snowball 词干提取词典，支持新的语言（Arthur Zakirov）§ 这为全文检索添加了阿拉伯语、印度尼西亚语、爱尔兰语、立陶宛语、尼泊尔语和泰米尔语的词干提取支持。", "title": "更新 Snowball 词干提取词典，支持新的语言", "commits": ["fd582317e"], "section": "数据类型", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.6", "source_hash": "80b8947f63515196d95b31837ff0d0df8e90bb7ccd68eacad1fdcdfc171a4b15", "section_path": ["数据类型"], "commit_groups": [["fd582317e"]], "identity_text": "Update Snowball stemmer dictionaries with support for new languages (Arthur Zakirov) This adds word stemming support for Arabic, Indonesian, Irish, Lithuanian, Nepali, and Tamil to full text search.", "commit_aliases": ["fd582317e"], "source_commits": ["fd582317e"], "source_entry_id": "12.0/changes/096", "db_id": "1468267bbc264355315798de82bfede5", "patch_ids": ["39aab1e89e135f1dd0db661636a9af03"], "statement_hash": "b379d85da4d8afd4043012550d2ce808da8789cacc58bc67a0608cfca625b75e", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-52611d448b631320", "cves": [], "html": "<p>允许创建将按位不同的字符串判定为相等的<a href=\"/docs/12/collation.html\" title=\"23.2. 排序规则支持\">排序规则</a>（Peter Eisentraut）<a href=\"https://postgr.es/c/5e1963fb7\">§</a></p>\n<p>此功能支持<span>“<span>非确定性</span>”</span>排序规则，可以定义不区分大小写和重音的相等比较。因此，例如在文本列上创建不区分大小写的唯一约束，会比以前更容易。只有 <acronym>ICU</acronym> 排序规则支持此功能。</p>", "text": "允许创建将按位不同的字符串判定为相等的排序规则（Peter Eisentraut）§ 此功能支持“非确定性”排序规则，可以定义不区分大小写和重音的相等比较。因此，例如在文本列上创建不区分大小写的唯一约束，会比以前更容易。只有 ICU 排序规则支持此功能。", "title": "允许创建将按位不同的字符串判定为相等的排序规则", "commits": ["5e1963fb7"], "section": "数据类型", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.6", "source_hash": "c0db9e165ad6a3de3d102c2df46c218dd8b368048bc9086a93f3248701097fb8", "section_path": ["数据类型"], "commit_groups": [["5e1963fb7"]], "identity_text": "Allow creation of collations that report string equality for strings that are not bit-wise equal (Peter Eisentraut) This feature supports nondeterministic collations that can define case- and accent-agnostic equality comparisons. Thus, for example, a case-insensitive uniqueness constraint on a text column can be made more easily than before. This is only supported for ICU collations.", "commit_aliases": ["5e1963fb7"], "source_commits": ["5e1963fb7"], "source_entry_id": "12.0/changes/097", "db_id": "ffc096970f4aac502ede72041cfc219d", "patch_ids": ["a4452a4f816af07d5e51f9cd35212585"], "statement_hash": "78bd5aa9366b983f6bf8ab6d9b9ea3c174492429a92de46fd2401086c1e22311", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-12e182f6c53e9824", "cves": [], "html": "<p>添加对旧版 ICU 中 <acronym>ICU</acronym> 排序规则属性的支持（Peter Eisentraut）<a href=\"https://postgr.es/c/b8f9a2a69\">§</a></p>\n<p>这使所有 ICU 版本都能以一致的方式自定义排序规则。</p>", "text": "添加对旧版 ICU 中 ICU 排序规则属性的支持（Peter Eisentraut）§ 这使所有 ICU 版本都能以一致的方式自定义排序规则。", "title": "添加对旧版 ICU 中 ICU 排序规则属性的支持", "commits": ["b8f9a2a69"], "section": "数据类型", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.6", "source_hash": "e10b640dbc72a21cc8f7b48543e7086579ec65ff5aa7e4168597af64b1ae74a9", "section_path": ["数据类型"], "commit_groups": [["b8f9a2a69"]], "identity_text": "Add support for ICU collation attributes on older ICU versions (Peter Eisentraut) This allows customization of the collation rules in a consistent way across all ICU versions.", "commit_aliases": ["b8f9a2a69"], "source_commits": ["b8f9a2a69"], "source_entry_id": "12.0/changes/098", "db_id": "4609e86c161b9930ef87b8ee91eb3b3b", "patch_ids": ["dd33d7428800ee318f06d13e16182b26"], "statement_hash": "67ff093a86bfb708630767fc8eeab7ffc7ecc1af6350d3410ed51d3ddf87cd07", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-237fab24636d86eb", "cves": [], "html": "<p>允许 <a href=\"/docs/12/datatype-character.html#DATATYPE-CHARACTER-SPECIAL-TABLE\" title=\"表 8.5. 特殊字符类型\">name</a> 数据类型与其他文本类型更顺畅地比较（Tom Lane）<a href=\"https://postgr.es/c/2ece7c07d\">§</a></p>\n<p><code>name</code> 类型现在的行为很像基于 <code>text</code> 类型、默认排序规则为 <span>“<span>C</span>”</span> 的域。这使跨类型比较能够得到更高效的处理。</p>", "text": "允许 name 数据类型与其他文本类型更顺畅地比较（Tom Lane）§ name 类型现在的行为很像基于 text 类型、默认排序规则为 “C” 的域。这使跨类型比较能够得到更高效的处理。", "title": "允许 name 数据类型与其他文本类型更顺畅地比较", "commits": ["2ece7c07d"], "section": "数据类型", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.6", "source_hash": "2131690f89a6af3451f147e876649e1ba22a52c4554a52b8f09d21f9e3df0d76", "section_path": ["数据类型"], "commit_groups": [["2ece7c07d"]], "identity_text": "Allow data type name to more seamlessly be compared to other text types (Tom Lane) Type name now behaves much like a domain over type text that has default collation C. This allows cross-type comparisons to be processed more efficiently.", "commit_aliases": ["2ece7c07d"], "source_commits": ["2ece7c07d"], "source_entry_id": "12.0/changes/099", "db_id": "0460bbdea8ecafe6e5a57921dfaeb0c6", "patch_ids": ["db9103343b3aa3b93b43104634c98567"], "statement_hash": "599421daa1e32a6d0df78b8b2a64355aa1856bf82a97e6babf32d5bf01d0a082", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-80d0b9f50b98b47c", "cves": [], "html": "<p>添加对 <acronym>SQL/JSON</acronym> <a href=\"/docs/12/functions-json.html#FUNCTIONS-SQLJSON-PATH\" title=\"9.15.2. SQL/JSON 路径语言\">路径</a>语言的支持（Nikita Glukhov，Teodor Sigaev，Alexander Korotkov，Oleg Bartunov，Liudmila Mantrova）<a href=\"https://postgr.es/c/72b646033\">§</a> <a href=\"https://postgr.es/c/16d489b0f\">§</a> <a href=\"https://postgr.es/c/0a02e2ae0\">§</a></p>\n<p>这允许使用符合 <acronym>SQL</acronym> 标准的语言对 <code>JSON</code> 值执行复杂查询。</p>", "text": "添加对 SQL/JSON 路径语言的支持（Nikita Glukhov，Teodor Sigaev，Alexander Korotkov，Oleg Bartunov，Liudmila Mantrova）§ § § 这允许使用符合 SQL 标准的语言对 JSON 值执行复杂查询。", "title": "添加对 SQL/JSON 路径语言的支持", "commits": ["0a02e2ae0", "16d489b0f", "72b646033"], "section": "函数", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "994d88fcd4b8546ca7d5d45db49200ac21fe72dec940fcd6253408d99efe82d3", "section_path": ["函数"], "commit_groups": [["0a02e2ae0"], ["16d489b0f"], ["72b646033"]], "identity_text": "Add support for the SQL/JSON path language (Nikita Glukhov, Teodor Sigaev, Alexander Korotkov, Oleg Bartunov, Liudmila Mantrova) This allows execution of complex queries on JSON values using an SQL-standard language.", "commit_aliases": ["0a02e2ae0", "16d489b0f", "72b646033"], "source_commits": ["0a02e2ae0", "16d489b0f", "72b646033"], "source_entry_id": "12.0/changes/100", "db_id": "1586a0b281145614252bf58832dd201e", "patch_ids": ["16b15f958fb2c879be97475353c748ab", "568941ae39be55f78be6589b12ec4f6c", "b17170eb407e1425f618e61e18270ce6"], "statement_hash": "6b00558c4ecb1270f8a4cffab4efb4e474283e6950cc41ae9df78d974f38e582", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-e7faeb1ebef991ba", "cves": [], "html": "<p>添加对<a href=\"/docs/12/functions-math.html#FUNCTIONS-MATH-HYP-TABLE\" title=\"表 9.8. 双曲函数\">双曲函数</a>的支持（Lætitia Avrot）<a href=\"https://postgr.es/c/f1d85aa98\">§</a></p>\n<p>同时为符合标准，添加 <code>log10()</code> 作为 <code>log()</code> 的别名。</p>", "text": "添加对双曲函数的支持（Lætitia Avrot）§ 同时为符合标准，添加 log10() 作为 log() 的别名。", "title": "添加对双曲函数的支持", "commits": ["f1d85aa98"], "section": "函数", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "d68b0c567a74264c4514d983f541832071d098c77e663fea29eaab54bc6692cb", "section_path": ["函数"], "commit_groups": [["f1d85aa98"]], "identity_text": "Add support for hyperbolic functions (Lætitia Avrot) Also add log10() as an alias for log(), for standards compliance.", "commit_aliases": ["f1d85aa98"], "source_commits": ["f1d85aa98"], "source_entry_id": "12.0/changes/101", "db_id": "06cb09d0d8f6b1300bd3b4d4e50a530b", "patch_ids": ["10d014e167f10064948e7b5faf6db732"], "statement_hash": "570d5cb4626b44023e880e81059b52ee8ee9505f9a8b9da4d0304db9dfb1462e", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-d8c1f351478eaf5a", "cves": [], "html": "<p>采用更精确的算法，提高 <a href=\"/docs/12/functions-aggregate.html#FUNCTIONS-AGGREGATE-STATISTICS-TABLE\" title=\"表 9.56. 用于统计的聚合函数\"><code>variance()</code></a> 等统计聚合的精度（Dean Rasheed）<a href=\"https://postgr.es/c/e954a727f\">§</a></p>", "text": "采用更精确的算法，提高 variance() 等统计聚合的精度（Dean Rasheed）§", "title": "采用更精确的算法，提高 variance() 等统计聚合的精度", "commits": ["e954a727f"], "section": "函数", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "a4deaafcd4ba273b8d34e216bec124bea5a4180f7d8d4087a140902ca9591760", "section_path": ["函数"], "commit_groups": [["e954a727f"]], "identity_text": "Improve the accuracy of statistical aggregates like variance() by using more precise algorithms (Dean Rasheed)", "commit_aliases": ["e954a727f"], "source_commits": ["e954a727f"], "source_entry_id": "12.0/changes/102", "db_id": "1414a0cab7555b28a39f41d7542473bf", "patch_ids": ["d5bb36949d051e7e16e50a7937d9d72f"], "statement_hash": "60fa401f95afc481e69e068bf3c7c71a7900cb136bac8f1c2afd3145e64f31cf", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-eda9fdb3b9c8c3d5", "cves": [], "html": "<p>允许 <a href=\"/docs/12/functions-datetime.html#FUNCTIONS-DATETIME-TABLE\" title=\"表 9.31. 日期/时间函数\"><code>date_trunc()</code></a> 接受额外参数来控制时区（Vik Fearing，Tom Lane）<a href=\"https://postgr.es/c/600b04d6b\">§</a></p>\n<p>这比使用 <code>AT TIME ZONE</code> 子句更快、更简单。</p>", "text": "允许 date_trunc() 接受额外参数来控制时区（Vik Fearing，Tom Lane）§ 这比使用 AT TIME ZONE 子句更快、更简单。", "title": "允许 date_trunc() 接受额外参数来控制时区", "commits": ["600b04d6b"], "section": "函数", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "643b27e6825476744b699d166eeaaef2b80823518ff845ea624cd6e0d82d09dd", "section_path": ["函数"], "commit_groups": [["600b04d6b"]], "identity_text": "Allow date_trunc() to have an additional argument to control the time zone (Vik Fearing, Tom Lane) This is faster and simpler than using the AT TIME ZONE clause.", "commit_aliases": ["600b04d6b"], "source_commits": ["600b04d6b"], "source_entry_id": "12.0/changes/103", "db_id": "4304dc6f5112cd0d7c854b1c3ce4b1b5", "patch_ids": ["82a26773b88c124482dc693a1c81fc10"], "statement_hash": "e0cbd6c63d278429d53b6cb68e2298b074b2b41d649038a351dde0acfdf8decb", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-80b55bd72d0d122a", "cves": [], "html": "<p>调整 <a href=\"/docs/12/functions-formatting.html#FUNCTIONS-FORMATTING-TABLE\" title=\"表 9.24. 格式化函数\"><code>to_timestamp()</code></a>/<code>to_date()</code> 函数，使其对模板不匹配更加宽容（Artur Zakirov，Alexander Korotkov，Liudmila Mantrova）<a href=\"https://postgr.es/c/cf9846724\">§</a></p>\n<p>这种新行为更接近 <span>Oracle</span> 的同名函数。</p>", "text": "调整 to_timestamp()/to_date() 函数，使其对模板不匹配更加宽容（Artur Zakirov，Alexander Korotkov，Liudmila Mantrova）§ 这种新行为更接近 Oracle 的同名函数。", "title": "调整 to_timestamp()/to_date() 函数，使其对模板不匹配更加宽容", "commits": ["cf9846724"], "section": "函数", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "281d2bea4f26811aa25ef53e4a08250c353537f021f17897fa79ac0efac21015", "section_path": ["函数"], "commit_groups": [["cf9846724"]], "identity_text": "Adjust to_timestamp()/to_date() functions to be more forgiving of template mismatches (Artur Zakirov, Alexander Korotkov, Liudmila Mantrova) This new behavior more closely matches the Oracle functions of the same name.", "commit_aliases": ["cf9846724"], "source_commits": ["cf9846724"], "source_entry_id": "12.0/changes/104", "db_id": "9f87683fe3f34279bfaa4afe6c6be680", "patch_ids": ["d31cb198867ebbbce4a440fd4cf5f4a1"], "statement_hash": "facec98e936cbbebe9cffcd76fb596a0a9803a0113dc8a3b5e5ca10236ac0a6d", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-a927a798e8f3683d", "cves": [], "html": "<p>修复 <a href=\"/docs/12/functions-xml.html\" title=\"9.14. XML 函数\"><acronym>XML</acronym> 函数</a>中的各类缺陷（Pavel Stehule，Markus Winand，Chapman Flack）<a href=\"https://postgr.es/c/251cf2e27\">§</a></p>\n<p>具体而言，修复 <code>XMLTABLE</code>、<code>xpath()</code> 和 <code>xmlexists()</code> 中某些节点没有输出、抛出意外错误，或遗漏 XML 特殊字符必要转义的情况。</p>", "text": "修复 XML 函数中的各类缺陷（Pavel Stehule，Markus Winand，Chapman Flack）§ 具体而言，修复 XMLTABLE、xpath() 和 xmlexists() 中某些节点没有输出、抛出意外错误，或遗漏 XML 特殊字符必要转义的情况。", "title": "修复 XML 函数中的各类缺陷", "commits": ["251cf2e27"], "section": "函数", "category": "bugfix", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "38c5751c7dc3af99dff58cfa4e9ae2f48005a6324bfb4bd1eba730404f71309a", "section_path": ["函数"], "commit_groups": [["251cf2e27"]], "identity_text": "Fix assorted bugs in XML functions (Pavel Stehule, Markus Winand, Chapman Flack) Specifically, in XMLTABLE, xpath(), and xmlexists(), fix some cases where nothing was output for a node, or an unexpected error was thrown, or necessary escaping of XML special characters was omitted.", "commit_aliases": ["251cf2e27"], "source_commits": ["251cf2e27"], "source_entry_id": "12.0/changes/105", "db_id": "3b0fa93ace51ac51ba21f294bd9f8d5b", "patch_ids": ["2faa6068a88d24ed1e6cc166d7f7c1a4"], "statement_hash": "a40900e933f658c6e8e471bed0cfc4fcd001fdb342cf17e37605cc66c43ff3fc", "relations": [], "version": "12.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-0d6983ea0574a06f", "cves": [], "html": "<p>允许在 <code>XMLEXISTS</code> 和 <code>XMLTABLE</code> 中使用 <code>BY VALUE</code> 子句（Chapman Flack）<a href=\"https://postgr.es/c/eaaa5986a\">§</a></p>\n<p>这个 SQL 标准子句在 <span>PostgreSQL</span> 的实现中没有作用，但以前被不必要地拒绝。</p>", "text": "允许在 XMLEXISTS 和 XMLTABLE 中使用 BY VALUE 子句（Chapman Flack）§ 这个 SQL 标准子句在 PostgreSQL 的实现中没有作用，但以前被不必要地拒绝。", "title": "允许在 XMLEXISTS 和 XMLTABLE 中使用 BY VALUE 子句", "commits": ["eaaa5986a"], "section": "函数", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "53fd6bf2caaa3dd4909b22afe47104fdfb3726df21e1ee9241198d58cff632de", "section_path": ["函数"], "commit_groups": [["eaaa5986a"]], "identity_text": "Allow the BY VALUE clause in XMLEXISTS and XMLTABLE (Chapman Flack) This SQL-standard clause has no effect in PostgreSQL's implementation, but it was unnecessarily being rejected.", "commit_aliases": ["eaaa5986a"], "source_commits": ["eaaa5986a"], "source_entry_id": "12.0/changes/106", "db_id": "1c2383816f96a4e0dac5aded9ae8bb3e", "patch_ids": ["7b61764fb26efb36ac3ab940951c9504"], "statement_hash": "033adc62d1b77dcc18f6d69a5acd77a18eeb74482a2cd6d77977070d6a2abdbc", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-9723cb07f3fc9bd3", "cves": [], "html": "<p>防止并行工作进程运行 <a href=\"/docs/12/functions-info.html#FUNCTIONS-INFO-SESSION-TABLE\" title=\"表 9.63. 会话信息函数\"><code>current_schema()</code></a> 和 <code>current_schemas()</code>，因为它们并非并行安全（Michaël Paquier）<a href=\"https://postgr.es/c/5bde1651b\">§</a></p>", "text": "防止并行工作进程运行 current_schema() 和 current_schemas()，因为它们并非并行安全（Michaël Paquier）§", "title": "防止并行工作进程运行 current_schema() 和 current_schemas()，因为它们并非并行安全", "commits": ["5bde1651b"], "section": "函数", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "34497bd0a04550c5b2ad57d4af4ca3e1fa306e10ebd7619b4bcda7f6bb6602b9", "section_path": ["函数"], "commit_groups": [["5bde1651b"]], "identity_text": "Prevent current_schema() and current_schemas() from being run by parallel workers, as they are not parallel-safe (Michaël Paquier)", "commit_aliases": ["5bde1651b"], "source_commits": ["5bde1651b"], "source_entry_id": "12.0/changes/107", "db_id": "5db82f5c12a93bd10eab35984bae85d4", "patch_ids": ["deb936cbd889b4da6fe60c12b7cca0e1"], "statement_hash": "f5672b5d2e492fc738f818dea5b54688158382a8d37ae1d67bc0cb34e142e2d2", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-758550e6c9f4a97b", "cves": [], "html": "<p>对于声明返回 <code>RECORD</code> 的<a href=\"/docs/12/queries-table-expressions.html#QUERIES-TABLEFUNCTIONS\" title=\"7.2.1.4. 表函数\">表函数</a>，允许在查询的列定义列表中使用 <code>RECORD</code> 和 <code>RECORD[]</code> 作为列类型（Elvis Pranskevichus）<a href=\"https://postgr.es/c/5f5c01459\">§</a></p>", "text": "对于声明返回 RECORD 的表函数，允许在查询的列定义列表中使用 RECORD 和 RECORD[] 作为列类型（Elvis Pranskevichus）§", "title": "对于声明返回 RECORD 的表函数，允许在查询的列定义列表中使用 RECORD 和 RECORD[] 作为列类型", "commits": ["5f5c01459"], "section": "函数", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "6fbeebc861649c95a2570a7c5cc0e2a9d5c00f1dc07653b1b8b371fbb4e43811", "section_path": ["函数"], "commit_groups": [["5f5c01459"]], "identity_text": "Allow RECORD and RECORD[] to be used as column types in a query's column definition list for a table function that is declared to return RECORD (Elvis Pranskevichus)", "commit_aliases": ["5f5c01459"], "source_commits": ["5f5c01459"], "source_entry_id": "12.0/changes/108", "db_id": "cf2d35caa1406b67a5d281aa8f786b56", "patch_ids": ["c56fee817b9336e532cbd5699429976c"], "statement_hash": "87c680b68da498ff8cd31d120f1a564f5d8ab11f4906a52dd10f674c45bee754", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-3262e7d1a29a7f62", "cves": [], "html": "<p>允许在同一 PL/pgSQL 函数中使用 SQL 命令及与这些命令同名的变量（Tom Lane）<a href=\"https://postgr.es/c/4879a5172\">§</a></p>\n<p>例如，允许在调用 <code>COMMENT</code> <acronym>SQL</acronym> 命令的函数中存在名为 <code>comment</code> 的变量。以前，这种组合会导致解析错误。</p>", "text": "允许在同一 PL/pgSQL 函数中使用 SQL 命令及与这些命令同名的变量（Tom Lane）§ 例如，允许在调用 COMMENT SQL 命令的函数中存在名为 comment 的变量。以前，这种组合会导致解析错误。", "title": "允许在同一 PL/pgSQL 函数中使用 SQL 命令及与这些命令同名的变量", "commits": ["4879a5172"], "section": "PL/pgSQL", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.8", "source_hash": "17c248a6cb17e2862e4d181e113c8974dabc8cb6330c388b1818574ded0ff479", "section_path": ["PL/pgSQL"], "commit_groups": [["4879a5172"]], "identity_text": "Allow SQL commands and variables with the same names as those commands to be used in the same PL/pgSQL function (Tom Lane) For example, allow a variable called comment to exist in a function that calls the COMMENT SQL command. Previously this combination caused a parse error.", "commit_aliases": ["4879a5172"], "source_commits": ["4879a5172"], "source_entry_id": "12.0/changes/109", "db_id": "e31b75b344e850bd9a294614858145ec", "patch_ids": ["970df9a3f77d1b60eb66f6d9a962cd02"], "statement_hash": "0550ec13fac453d6888d55fe409c86e55ae88b86473556d87b897715b7b4bdfb", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-4e181a4e7137ffec", "cves": [], "html": "<p>为 PL/pgSQL 添加新的可选警告和错误检查（Pavel Stehule）<a href=\"https://postgr.es/c/167075be3\">§</a></p>\n<p>这些新检查允许在运行时验证 <code>INTO</code> 的列数以及结果是否为单行。</p>", "text": "为 PL/pgSQL 添加新的可选警告和错误检查（Pavel Stehule）§ 这些新检查允许在运行时验证 INTO 的列数以及结果是否为单行。", "title": "为 PL/pgSQL 添加新的可选警告和错误检查", "commits": ["167075be3"], "section": "PL/pgSQL", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.8", "source_hash": "018f26cc998b44620b7585ca1dfe582a848fd9d8619c7b6cc7bdebaf941fecd8", "section_path": ["PL/pgSQL"], "commit_groups": [["167075be3"]], "identity_text": "Add new optional warning and error checks to PL/pgSQL (Pavel Stehule) The new checks allow for run-time validation of INTO column counts and single-row results.", "commit_aliases": ["167075be3"], "source_commits": ["167075be3"], "source_entry_id": "12.0/changes/110", "db_id": "82efaaa8826c2b363d8cd92bc25871b2", "patch_ids": ["d42faef1a65b3c6622e56a94b594749b"], "statement_hash": "f3d9592a4335d16a678a47a3cfdaad8ae6f4adc2afd03f63b9b86b36b5678eb9", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-5629245fde067c8f", "cves": [], "html": "<p>添加连接参数<a href=\"/docs/12/libpq.html#LIBPQ-TCP-USER-TIMEOUT\">tcp_user_timeout</a>，以控制 <span>libpq</span> 的 <acronym>TCP</acronym> 超时（Ryohei Nagaura）<a href=\"https://postgr.es/c/249d64999\">§</a></p>", "text": "添加连接参数tcp_user_timeout，以控制 libpq 的 TCP 超时（Ryohei Nagaura）§", "title": "添加连接参数tcp_user_timeout，以控制 libpq 的 TCP 超时", "commits": ["249d64999"], "section": "客户端接口", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.9", "source_hash": "ad6e36f035ab73c79bc69d12634ae19d75ef0384486d33345f1232e800e74696", "section_path": ["客户端接口"], "commit_groups": [["249d64999"]], "identity_text": "Add connection parameter libpq-tcp-user-timeout to control libpq's TCP timeout (Ryohei Nagaura)", "commit_aliases": ["249d64999"], "source_commits": ["249d64999"], "source_entry_id": "12.0/changes/111", "db_id": "6cdb02aaf10f70c32c4fa280b47ff16d", "patch_ids": ["e1d646e699a8d1ecb622399096f1c3c4"], "statement_hash": "b7aecfa776c3ce1693c6703745dfde3f8a502d30cff5487dafbb27e51f1eaec5", "relations": [{"rule": 2, "type": "related", "target": "0ed4ea34f97ff2c06b766fe41327709b", "evidence": {"same_day": true, "patch_ids": ["e1d646e699a8d1ecb622399096f1c3c4"], "ambiguous_patch_ids": ["e1d646e699a8d1ecb622399096f1c3c4"]}}], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": [{"db_id": "0ed4ea34f97ff2c06b766fe41327709b", "kind": "related", "version": "12.0", "label": "12.0", "title": "添加服务器参数tcp_user_timeout，以控制服务器的 TCP 超时", "evidence": {"same_day": true, "patch_ids": ["e1d646e699a8d1ecb622399096f1c3c4"], "ambiguous_patch_ids": ["e1d646e699a8d1ecb622399096f1c3c4"]}, "url": "/docs/compare/?release=12.0#12.0-d69e960219843ac4", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8"}]}, {"id": "12.0-d2ea975b98e40dd8", "cves": [], "html": "<p>允许 <span>libpq</span>（以及 <span>psql</span>）在错误消息中仅报告 <code>SQLSTATE</code> 值（Didier Gautheron）<a href=\"https://postgr.es/c/7bac3acab\">§</a></p>", "text": "允许 libpq（以及 psql）在错误消息中仅报告 SQLSTATE 值（Didier Gautheron）§", "title": "允许 libpq（以及 psql）在错误消息中仅报告 SQLSTATE 值", "commits": ["7bac3acab"], "section": "客户端接口", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.9", "source_hash": "fb020a8998bda22501e33210361e0f484ec3a0b4bfee20dc6ee7083601eefcd1", "section_path": ["客户端接口"], "commit_groups": [["7bac3acab"]], "identity_text": "Allow libpq (and thus psql) to report only the SQLSTATE value in error messages (Didier Gautheron)", "commit_aliases": ["7bac3acab"], "source_commits": ["7bac3acab"], "source_entry_id": "12.0/changes/112", "db_id": "b1eeec5f591a9bb90f482c54d539a7bf", "patch_ids": ["b1b108684a665b50ef87f2e5a74ab410"], "statement_hash": "296db90d68835ea598b3a3ab7b4a818b62dd9fe1f5b0c34c681d78f1f9ece81e", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-2f0c0b46da054303", "cves": [], "html": "<p>添加 <span>libpq</span> 函数 <a href=\"/docs/12/libpq-misc.html#LIBPQ-PQRESULTMEMORYSIZE\"><code>PQresultMemorySize()</code></a>，以报告查询结果使用的内存（Lars Kanis，Tom Lane）<a href=\"https://postgr.es/c/2970afa6c\">§</a></p>", "text": "添加 libpq 函数 PQresultMemorySize()，以报告查询结果使用的内存（Lars Kanis，Tom Lane）§", "title": "添加 libpq 函数 PQresultMemorySize()，以报告查询结果使用的内存", "commits": ["2970afa6c"], "section": "客户端接口", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.9", "source_hash": "a85cb8d31572a3f1a82104dca43291621500df8cdc2a311bd8072135aa8f85e5", "section_path": ["客户端接口"], "commit_groups": [["2970afa6c"]], "identity_text": "Add libpq function PQresultMemorySize() to report the memory used by a query result (Lars Kanis, Tom Lane)", "commit_aliases": ["2970afa6c"], "source_commits": ["2970afa6c"], "source_entry_id": "12.0/changes/113", "db_id": "2438973de63c84922fc9d2aa955870a9", "patch_ids": ["acd9297894fb9c20e05a117eab29a848"], "statement_hash": "1c15b524431ebabfa869142cfa62e9aa533b89af205e439ad9cdeda73755726c", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-6f4720c5dfc7db6f", "cves": [], "html": "<p>移除 <span>libpq</span> 的 <code>options</code> 连接参数上的不显示/调试标志（Peter Eisentraut）<a href=\"https://postgr.es/c/1fea1e325\">§</a></p>\n<p>这允许 <span>postgres_fdw</span> 设置该参数。</p>", "text": "移除 libpq 的 options 连接参数上的不显示/调试标志（Peter Eisentraut）§ 这允许 postgres_fdw 设置该参数。", "title": "移除 libpq 的 options 连接参数上的不显示/调试标志", "commits": ["1fea1e325"], "section": "客户端接口", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.9", "source_hash": "ea337f36889acd097c5f9da41d08fb6845f9d53571504fd177ef8cbccac74957", "section_path": ["客户端接口"], "commit_groups": [["1fea1e325"]], "identity_text": "Remove the no-display/debug flag from libpq's options connection parameter (Peter Eisentraut) This allows this parameter to be set by postgres_fdw.", "commit_aliases": ["1fea1e325"], "source_commits": ["1fea1e325"], "source_entry_id": "12.0/changes/114", "db_id": "8b21ccfc7ae0efc34381be889421dffa", "patch_ids": ["a654a979680d8eaa50e6aa436de3b2e0"], "statement_hash": "32ae72e5e513511ad52a620417361712771819e524a1a06cddd3540c2e7b542f", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-f527df4b919fff29", "cves": [], "html": "<p>允许<a href=\"/docs/12/app-ecpg.html\" title=\"ecpg\"><span><span>ecpg</span></span></a>创建 <code>bytea</code> 数据类型的变量（Ryo Matsumura）<a href=\"https://postgr.es/c/050710b36\">§</a></p>\n<p>这允许 ECPG 客户端直接处理 <code>bytea</code> 数据，而无需使用编码形式。</p>", "text": "允许ecpg创建 bytea 数据类型的变量（Ryo Matsumura）§ 这允许 ECPG 客户端直接处理 bytea 数据，而无需使用编码形式。", "title": "允许ecpg创建 bytea 数据类型的变量", "commits": ["050710b36"], "section": "客户端接口", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.9", "source_hash": "97f96c39b6406c2c8991a97d4e03d2fa36741fa6447c4b65670b57f7a32636c9", "section_path": ["客户端接口"], "commit_groups": [["050710b36"]], "identity_text": "Allow app-ecpg to create variables of data type bytea (Ryo Matsumura) This allows ECPG clients to interact with bytea data directly, rather than using an encoded form.", "commit_aliases": ["050710b36"], "source_commits": ["050710b36"], "source_entry_id": "12.0/changes/115", "db_id": "58376bcf403b7cee7695265a7274365e", "patch_ids": ["ae602ecdbeea100c575a7381e380b063"], "statement_hash": "6ce48014d4716b18d218ae9cbe07cfad13e63fd46613532e34213ff743a0c2dd", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-f69b82b2199b4989", "cves": [], "html": "<p>为 <span>ECPG</span> 添加 <code>PREPARE AS</code> 支持（Ryo Matsumura）<a href=\"https://postgr.es/c/a1dc6ab46\">§</a></p>", "text": "为 ECPG 添加 PREPARE AS 支持（Ryo Matsumura）§", "title": "为 ECPG 添加 PREPARE AS 支持", "commits": ["a1dc6ab46"], "section": "客户端接口", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.9", "source_hash": "20084652270a4a89b457035d66abe24d74dfdb8af03ec9bf1e578cb93b238463", "section_path": ["客户端接口"], "commit_groups": [["a1dc6ab46"]], "identity_text": "Add PREPARE AS support to ECPG (Ryo Matsumura)", "commit_aliases": ["a1dc6ab46"], "source_commits": ["a1dc6ab46"], "source_entry_id": "12.0/changes/116", "db_id": "ce6f8a4e4a20debc41354272641b5983", "patch_ids": ["6d43e64a6eb9f5ec58db8cce805d6440"], "statement_hash": "5beb05d0b9536c9d8c51bbaf5a4aa6efe9fa0547f36ca2c9532bfa22ddf5ab5d", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-afd8094122ff0fba", "cves": [], "html": "<p>允许<a href=\"/docs/12/app-vacuumdb.html\" title=\"vacuumdb\"><span><span>vacuumdb</span></span></a>根据表的回卷视界选择需要清理的表（Nathan Bossart）<a href=\"https://postgr.es/c/00d1e88d3\">§</a></p>\n<p>相应选项为 <code>--min-xid-age</code> 和 <code>--min-mxid-age</code>。</p>", "text": "允许vacuumdb根据表的回卷视界选择需要清理的表（Nathan Bossart）§ 相应选项为 --min-xid-age 和 --min-mxid-age。", "title": "允许vacuumdb根据表的回卷视界选择需要清理的表", "commits": ["00d1e88d3"], "section": "客户端应用程序", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10", "source_hash": "64d419375f429460ea5c82d53486fd01b6bec0775f9ffab5583ab2040a50f0f6", "section_path": ["客户端应用程序"], "commit_groups": [["00d1e88d3"]], "identity_text": "Allow app-vacuumdb to select tables for vacuum based on their wraparound horizon (Nathan Bossart) The options are --min-xid-age and --min-mxid-age.", "commit_aliases": ["00d1e88d3"], "source_commits": ["00d1e88d3"], "source_entry_id": "12.0/changes/117", "db_id": "bbf34c8596b003809414379eb8e8a78e", "patch_ids": ["c0e4454d9c15b78a52c9815ed569195b"], "statement_hash": "2b6abd4f891e8e8057bc1b3c57ff1e197882e54719112e8ab8c890efbf80a0de", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-f0c1eb138168e13b", "cves": [], "html": "<p>允许 <span>vacuumdb</span> 禁用锁等待或禁用对全可见页面的跳过（Nathan Bossart）<a href=\"https://postgr.es/c/354e95d1f\">§</a></p>\n<p>相应选项为 <code>--skip-locked</code> 和 <code>--disable-page-skipping</code>。</p>", "text": "允许 vacuumdb 禁用锁等待或禁用对全可见页面的跳过（Nathan Bossart）§ 相应选项为 --skip-locked 和 --disable-page-skipping。", "title": "允许 vacuumdb 禁用锁等待或禁用对全可见页面的跳过", "commits": ["354e95d1f"], "section": "客户端应用程序", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10", "source_hash": "e78217e4275d061b52d64f8dee60d38bbe535ea83cbc040886d38893314b6434", "section_path": ["客户端应用程序"], "commit_groups": [["354e95d1f"]], "identity_text": "Allow vacuumdb to disable waiting for locks or skipping all-visible pages (Nathan Bossart) The options are --skip-locked and --disable-page-skipping.", "commit_aliases": ["354e95d1f"], "source_commits": ["354e95d1f"], "source_entry_id": "12.0/changes/118", "db_id": "c106017a8bc520991b52363d82dc9ee9", "patch_ids": ["673166ece45615f638d4f3c9bb65af1d"], "statement_hash": "e988bea99cf0a725a692e682914a542bde326dd7a29092bce80e30a58cbbec62", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-dc975e10f1cf9750", "cves": [], "html": "<p>为命令行工具的输出添加着色（Peter Eisentraut）<a href=\"https://postgr.es/c/cc8d41511\">§</a></p>\n<p>将环境变量 <code>PG_COLOR</code> 设置为 <code>always</code> 或 <code>auto</code> 即可启用此功能。可以设置环境变量 <code>PG_COLORS</code>，使用 ANSI 颜色转义码调整具体颜色。例如，默认行为等同于 <code>PG_COLORS=\"error=01;31:warning=01;35:locus=01\"</code>。</p>", "text": "为命令行工具的输出添加着色（Peter Eisentraut）§ 将环境变量 PG_COLOR 设置为 always 或 auto 即可启用此功能。可以设置环境变量 PG_COLORS，使用 ANSI 颜色转义码调整具体颜色。例如，默认行为等同于 PG_COLORS=\"error=01;31:warning=01;35:locus=01\"。", "title": "为命令行工具的输出添加着色", "commits": ["cc8d41511"], "section": "客户端应用程序", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10", "source_hash": "5adbe351420a3279eecce495461405f1dbdecbfe75e8267cf900ea8bce03d598", "section_path": ["客户端应用程序"], "commit_groups": [["cc8d41511"]], "identity_text": "Add colorization to the output of command-line utilities (Peter Eisentraut) This is enabled by setting the environment variable PG_COLOR to always or auto. The specific colors used can be adjusted by setting the environment variable PG_COLORS, using ANSI escape codes for colors. For example, the default behavior is equivalent to PG_COLORS=\"error=01;31:warning=01;35:locus=01\".", "commit_aliases": ["cc8d41511"], "source_commits": ["cc8d41511"], "source_entry_id": "12.0/changes/119", "db_id": "7d883199126da048eaa05b3db4317b83", "patch_ids": ["9520998690afe86c0110f8b2d9e2d62e"], "statement_hash": "869c4c4103bb1a2c99826fc7bd99b9a8e83532c3032ed9a5b01adaf0f4d94e6a", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-85d66595d932ad65", "cves": [], "html": "<p>在 <span>psql</span> 中添加 <acronym>CSV</acronym> 表格输出模式（Daniel Vérité）<a href=\"https://postgr.es/c/aa2ba50c2\">§</a></p>\n<p>这通过 <code>\\pset format csv</code> 或命令行选项 <code>--csv</code> 控制。</p>", "text": "在 psql 中添加 CSV 表格输出模式（Daniel Vérité）§ 这通过 \\pset format csv 或命令行选项 --csv 控制。", "title": "在 psql 中添加 CSV 表格输出模式", "commits": ["aa2ba50c2"], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10.3", "source_hash": "f77a0a28f01b97da4cc29f365669e6cd90af509ec6a50a4513e62e8af26c8298", "section_path": ["客户端应用程序", "psql"], "commit_groups": [["aa2ba50c2"]], "identity_text": "Add CSV table output mode in psql (Daniel Vérité) This is controlled by \\pset format csv or the command-line --csv option.", "commit_aliases": ["aa2ba50c2"], "source_commits": ["aa2ba50c2"], "source_entry_id": "12.0/changes/120", "db_id": "7fedba2553967302fbf979bc04da9520", "patch_ids": ["ec6e40f91820832ca34b2852cd308dcf"], "statement_hash": "e19bfbb439907df59c312662f120789369393be52e7a549111502f473931302f", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-99d7888a273df435", "cves": [], "html": "<p>在 <span>psql</span> 针对 SQL 命令的 <code>\\help</code> 输出中显示手册页面的 <acronym>URL</acronym>（Peter Eisentraut）<a href=\"https://postgr.es/c/27f3dea64\">§</a></p>", "text": "在 psql 针对 SQL 命令的 \\help 输出中显示手册页面的 URL（Peter Eisentraut）§", "title": "在 psql 针对 SQL 命令的 \\help 输出中显示手册页面的 URL", "commits": ["27f3dea64"], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10.3", "source_hash": "af6b26cca0fc53dae3c8560208083bef29123b229bb3a4d2b8ef15d779498ce4", "section_path": ["客户端应用程序", "psql"], "commit_groups": [["27f3dea64"]], "identity_text": "Show the manual page URL in psql's \\help output for a SQL command (Peter Eisentraut)", "commit_aliases": ["27f3dea64"], "source_commits": ["27f3dea64"], "source_entry_id": "12.0/changes/121", "db_id": "748182c2f3bc206b41a34a3d9437807a", "patch_ids": ["5f462ad3b12e68e3100db2ffb561e67c"], "statement_hash": "94b722349271e93aa0b69d096e1db17f0bae6f98e50fafdb7249ae2d1cb1f17e", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-6fce592bfb6ba5f6", "cves": [], "html": "<p>在 <span>psql</span> 的 <code>\\conninfo</code> 中显示 <acronym>IP</acronym> 地址（Fabien Coelho）<a href=\"https://postgr.es/c/6e5f8d489\">§</a> <a href=\"https://postgr.es/c/313f56ce2\">§</a></p>", "text": "在 psql 的 \\conninfo 中显示 IP 地址（Fabien Coelho）§ §", "title": "在 psql 的 \\conninfo 中显示 IP 地址", "commits": ["313f56ce2", "6e5f8d489"], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10.3", "source_hash": "01ae29b63342ff29bfe8ec23a72c96c60ddadbd5e55370379bbbcff4953edaa8", "section_path": ["客户端应用程序", "psql"], "commit_groups": [["313f56ce2"], ["6e5f8d489"]], "identity_text": "Display the IP address in psql's \\conninfo (Fabien Coelho)", "commit_aliases": ["313f56ce2", "6e5f8d489"], "source_commits": ["313f56ce2", "6e5f8d489"], "source_entry_id": "12.0/changes/122", "db_id": "c50b7ae393db2a3272143083fdff8c35", "patch_ids": ["bd1851698a553ebc11f199b9f61dbf6b", "f645ed74fe778d630421dd39a1f48f56"], "statement_hash": "b709b48d7f640ffb6c60382510a31c7ff4558a8b77b2d7f482d0a0acedbdbf73", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-07a8f9a76da71869", "cves": [], "html": "<p>改进 <code>CREATE TABLE</code>、<code>CREATE TRIGGER</code>、<code>CREATE EVENT TRIGGER</code>、<code>ANALYZE</code>、<code>EXPLAIN</code>、<code>VACUUM</code>、<code>ALTER TABLE</code>、<code>ALTER INDEX</code>、<code>ALTER DATABASE</code> 和 <code>ALTER INDEX ALTER COLUMN</code> 的 Tab 补全（Dagfinn Ilmari Mannsåker，Tatsuro Yamada，Michaël Paquier，Tom Lane，Justin Pryzby）<a href=\"https://postgr.es/c/11a60d496\">§</a> <a href=\"https://postgr.es/c/5953c9969\">§</a> <a href=\"https://postgr.es/c/292ef6e27\">§</a> <a href=\"https://postgr.es/c/23349b18d\">§</a> <a href=\"https://postgr.es/c/4cba9c2a3\">§</a> <a href=\"https://postgr.es/c/a7c4dad1a\">§</a> <a href=\"https://postgr.es/c/f89ae34ab\">§</a> <a href=\"https://postgr.es/c/c9a8a401f\">§</a> <a href=\"https://postgr.es/c/121213d9d\">§</a></p>", "text": "改进 CREATE TABLE、CREATE TRIGGER、CREATE EVENT TRIGGER、ANALYZE、EXPLAIN、VACUUM、ALTER TABLE、ALTER INDEX、ALTER DATABASE 和 ALTER INDEX ALTER COLUMN 的 Tab 补全（Dagfinn Ilmari Mannsåker，Tatsuro Yamada，Michaël Paquier，Tom Lane，Justin Pryzby）§ § § § § § § § §", "title": "改进 CREATE TABLE、CREATE TRIGGER、CREATE EVENT TRIGGER、ANALYZE、EXPLAIN、VACUUM、ALTER TABLE、ALTER INDEX、ALTER DATABASE 和 ALTER INDEX ALTER COLUMN 的 Tab 补全", "commits": ["11a60d496", "121213d9d", "23349b18d", "292ef6e27", "4cba9c2a3", "5953c9969", "a7c4dad1a", "c9a8a401f", "f89ae34ab"], "section": "客户端应用程序 / psql", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10.3", "source_hash": "73e840dcddae67fe3ae8b2987fe46bb22745bc0f63978c3bb26777e9503e3b88", "section_path": ["客户端应用程序", "psql"], "commit_groups": [["11a60d496"], ["121213d9d"], ["23349b18d"], ["292ef6e27"], ["4cba9c2a3"], ["5953c9969"], ["a7c4dad1a"], ["c9a8a401f"], ["f89ae34ab"]], "identity_text": "Improve tab completion of CREATE TABLE, CREATE TRIGGER, CREATE EVENT TRIGGER, ANALYZE, EXPLAIN, VACUUM, ALTER TABLE, ALTER INDEX, ALTER DATABASE, and ALTER INDEX ALTER COLUMN (Dagfinn Ilmari Mannsåker, Tatsuro Yamada, Michaël Paquier, Tom Lane, Justin Pryzby)", "commit_aliases": ["11a60d496", "121213d9d", "23349b18d", "292ef6e27", "4cba9c2a3", "5953c9969", "a7c4dad1a", "c9a8a401f", "f89ae34ab"], "source_commits": ["11a60d496", "121213d9d", "23349b18d", "292ef6e27", "4cba9c2a3", "5953c9969", "a7c4dad1a", "c9a8a401f", "f89ae34ab"], "source_entry_id": "12.0/changes/123", "db_id": "f81f1d1dbec6cf724be0e93dbdc95b6a", "patch_ids": ["05ff005f60d3a1b6def37392963fd376", "2836c84bd052938c175ab2725ec80113", "56d28cf7f0fc83d0a7f92a8d344cecc8", "63f13df32a97de8d8afd612c58afc46b", "842447e31821dddfcbbef69c76d2dbe6", "9c0246ca6d33a1a74deb76e4923149da", "a594e96b32f99e433e3227b0f2deea6c", "bd8a8ee62f527b677bca142113f5be36", "f8366dffd1179ceabb246ccd76950944"], "statement_hash": "1e200bf2e849ad40df92c554448fb1756c040b9839d3dcc30e5e54e9b7a96bd4", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-ad8c8ea55c386949", "cves": [], "html": "<p>允许将查询产生的值赋给 <span>pgbench</span> 变量（Fabien Coelho，Álvaro Herrera）<a href=\"https://postgr.es/c/6260cc550\">§</a> <a href=\"https://postgr.es/c/25ee70511\">§</a></p>\n<p>相应命令为 <code>\\gset</code>。</p>", "text": "允许将查询产生的值赋给 pgbench 变量（Fabien Coelho，Álvaro Herrera）§ § 相应命令为 \\gset。", "title": "允许将查询产生的值赋给 pgbench 变量", "commits": ["25ee70511", "6260cc550"], "section": "客户端应用程序 / pgbench", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10.4", "source_hash": "93e9496f075a4d4a0c9a6781a0a886c869afc5773213e96f2316ab282a1d031c", "section_path": ["客户端应用程序", "pgbench"], "commit_groups": [["25ee70511"], ["6260cc550"]], "identity_text": "Allow values produced by queries to be assigned to pgbench variables (Fabien Coelho, Álvaro Herrera) The command for this is \\gset.", "commit_aliases": ["25ee70511", "6260cc550"], "source_commits": ["25ee70511", "6260cc550"], "source_entry_id": "12.0/changes/124", "db_id": "dc4f925525f7acc571105cc451504672", "patch_ids": ["9d16359b851147594286f341956b7d4a", "fdd8e9219e26ca3a112cf43cb9e3dbb7"], "statement_hash": "a6a83267f870e4edfa1dd95edb2920dca980f398d9c78afa8dc12edff830c1b9", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-de30571b92d47111", "cves": [], "html": "<p>提高 <span>pgbench</span> 的 <code>--rate</code> 选项的精度（Tom Lane）<a href=\"https://postgr.es/c/5b7e03670\">§</a></p>", "text": "提高 pgbench 的 --rate 选项的精度（Tom Lane）§", "title": "提高 pgbench 的 --rate 选项的精度", "commits": ["5b7e03670"], "section": "客户端应用程序 / pgbench", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10.4", "source_hash": "76615b00d95b7a95f9ad1ab90a2e8ae1148c86c04c13aa6ec3e9a7edd5b3ef86", "section_path": ["客户端应用程序", "pgbench"], "commit_groups": [["5b7e03670"]], "identity_text": "Improve precision of pgbench's --rate option (Tom Lane)", "commit_aliases": ["5b7e03670"], "source_commits": ["5b7e03670"], "source_entry_id": "12.0/changes/125", "db_id": "d30ad0852072cc530e5931b6db4dfbb1", "patch_ids": ["b47e21340ee28c0f9c02465ff95ed2fb"], "statement_hash": "5b52a69b3ca590af6bf44aaf9eb703177f9c3e757433bd0022a2958f555271d5", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-7f3847df4645361f", "cves": [], "html": "<p>以更清楚的消息和返回码改进 <span>pgbench</span> 的错误报告（Peter Eisentraut）<a href=\"https://postgr.es/c/5b75a4f82\">§</a></p>", "text": "以更清楚的消息和返回码改进 pgbench 的错误报告（Peter Eisentraut）§", "title": "以更清楚的消息和返回码改进 pgbench 的错误报告", "commits": ["5b75a4f82"], "section": "客户端应用程序 / pgbench", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10.4", "source_hash": "70f56686a4d90fcbd387c0b3880333053689d2af5522739ca5dc24124a37be66", "section_path": ["客户端应用程序", "pgbench"], "commit_groups": [["5b75a4f82"]], "identity_text": "Improve pgbench's error reporting with clearer messages and return codes (Peter Eisentraut)", "commit_aliases": ["5b75a4f82"], "source_commits": ["5b75a4f82"], "source_entry_id": "12.0/changes/126", "db_id": "b34967b756cb0050557488269791fb73", "patch_ids": ["f15f2a5462dc93102decd67620d93b82"], "statement_hash": "8a5912671f6656f5c93b8c47474b3f29dd960b34e21089514d916517445b6b27", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-92a1bc7e77c6da43", "cves": [], "html": "<p>允许通过<a href=\"/docs/12/app-pg-ctl.html\" title=\"pg_ctl\"><span><span>pg_ctl</span></span></a>控制日志文件轮转（Kyotaro Horiguchi，Alexander Kuzmenkov，Alexander Korotkov）<a href=\"https://postgr.es/c/ec7436993\">§</a></p>\n<p>以前，只能通过 <acronym>SQL</acronym> 函数或进程信号来完成此操作。</p>", "text": "允许通过pg_ctl控制日志文件轮转（Kyotaro Horiguchi，Alexander Kuzmenkov，Alexander Korotkov）§ 以前，只能通过 SQL 函数或进程信号来完成此操作。", "title": "允许通过pg_ctl控制日志文件轮转", "commits": ["ec7436993"], "section": "服务器应用程序", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11", "source_hash": "16669d62eb5a19dd4f555c3bc170e55b10d23bcc8bcc813489a55d510f7baf91", "section_path": ["服务器应用程序"], "commit_groups": [["ec7436993"]], "identity_text": "Allow control of log file rotation via app-pg-ctl (Kyotaro Horiguchi, Alexander Kuzmenkov, Alexander Korotkov) Previously, this was only possible via an SQL function or a process signal.", "commit_aliases": ["ec7436993"], "source_commits": ["ec7436993"], "source_entry_id": "12.0/changes/127", "db_id": "934eb313c54cc14112284a154340e81b", "patch_ids": ["4a36c7ccf2387c3538e7c7b7e59c0cf6"], "statement_hash": "7776d576c40eb2c163768f6b7f865d6981cd0aa190cc209087685b4aa258d61b", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-d7c4c20eaf767454", "cves": [], "html": "<p>在 <code><span>pg_ctl</span> start</code> 期间正确分离新服务器进程（Paul Guo）<a href=\"https://postgr.es/c/bb24439ce\">§</a></p>\n<p>这可防止调用 <span>pg_ctl</span> 的 shell 脚本后来被中断时，服务器随之关闭。</p>", "text": "在 pg_ctl start 期间正确分离新服务器进程（Paul Guo）§ 这可防止调用 pg_ctl 的 shell 脚本后来被中断时，服务器随之关闭。", "title": "在 pg_ctl start 期间正确分离新服务器进程", "commits": ["bb24439ce"], "section": "服务器应用程序", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11", "source_hash": "869df87919811771d9d752021a5a11b17b77fbaaf27df4a6c2073f9437c3203c", "section_path": ["服务器应用程序"], "commit_groups": [["bb24439ce"]], "identity_text": "Properly detach the new server process during pg_ctl start (Paul Guo) This prevents the server from being shut down if the shell script that invoked pg_ctl is interrupted later.", "commit_aliases": ["bb24439ce"], "source_commits": ["bb24439ce"], "source_entry_id": "12.0/changes/128", "db_id": "c07f4ba6408ddca19d410c753094fd7f", "patch_ids": ["8a62b8bfc3713ca19b23e7d6cddf422a"], "statement_hash": "ab6fe4f2414ccb534c7abc0b7af4ae89621d429c666251db515d814a7126dd2e", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-3b47b162dcb26a4a", "cves": [], "html": "<p>如果文件系统具有克隆功能，则允许<a href=\"/docs/12/pgupgrade.html\" title=\"pg_upgrade\"><span><span>pg_upgrade</span></span></a>使用它（Peter Eisentraut）<a href=\"https://postgr.es/c/3a769d823\">§</a></p>\n<p><code>--clone</code> 选项具有 <code>--link</code> 的优点，同时可以防止新集群启动后旧集群被改动。</p>", "text": "如果文件系统具有克隆功能，则允许pg_upgrade使用它（Peter Eisentraut）§ --clone 选项具有 --link 的优点，同时可以防止新集群启动后旧集群被改动。", "title": "如果文件系统具有克隆功能，则允许pg_upgrade使用它", "commits": ["3a769d823"], "section": "服务器应用程序", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11", "source_hash": "276326f10b7d9eed9502ee8b01421bb03bec2bdd7812123d48f7e21f2422f2a0", "section_path": ["服务器应用程序"], "commit_groups": [["3a769d823"]], "identity_text": "Allow pgupgrade to use the file system's cloning feature, if there is one (Peter Eisentraut) The --clone option has the advantages of --link, while preventing the old cluster from being changed after the new cluster has started.", "commit_aliases": ["3a769d823"], "source_commits": ["3a769d823"], "source_entry_id": "12.0/changes/129", "db_id": "95bcaccf47f3728a10321f1751df6cf9", "patch_ids": ["2838d496c71fa7b90b2512e71b4bc30d"], "statement_hash": "fcaeff4121e842ee75a074f361faed9f4e8eb4c25858c369526db01a1b6f5893", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-e2777a4c38c60198", "cves": [], "html": "<p>允许指定 <span>pg_upgrade</span> 使用的套接字目录（Daniel Gustafsson）<a href=\"https://postgr.es/c/2d34ad843\">§</a></p>\n<p>这通过 <code>--socketdir</code> 控制，默认为当前目录。</p>", "text": "允许指定 pg_upgrade 使用的套接字目录（Daniel Gustafsson）§ 这通过 --socketdir 控制，默认为当前目录。", "title": "允许指定 pg_upgrade 使用的套接字目录", "commits": ["2d34ad843"], "section": "服务器应用程序", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11", "source_hash": "eaff4bf6127d1f23853fa26146562703107839b2420633e800de290e6430ba1a", "section_path": ["服务器应用程序"], "commit_groups": [["2d34ad843"]], "identity_text": "Allow specification of the socket directory to use in pg_upgrade (Daniel Gustafsson) This is controlled by --socketdir; the default is the current directory.", "commit_aliases": ["2d34ad843"], "source_commits": ["2d34ad843"], "source_entry_id": "12.0/changes/130", "db_id": "62bb91896d9976a99367bf78aa4e40ca", "patch_ids": ["cc16d0452716049c9f5b46898765ef13"], "statement_hash": "1a492024862b7ef69469c497ceee23c7598bc5e522d515f92a40e8ffedcb1956", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-abd72407d4d9c992", "cves": [], "html": "<p>允许<a href=\"/docs/12/app-pgchecksums.html\" title=\"pg_checksums\"><span><span>pg_checksums</span></span></a>禁用 fsync 操作（Michaël Paquier）<a href=\"https://postgr.es/c/e0090c869\">§</a></p>\n<p>这通过 <code>--no-sync</code> 选项控制。</p>", "text": "允许pg_checksums禁用 fsync 操作（Michaël Paquier）§ 这通过 --no-sync 选项控制。", "title": "允许pg_checksums禁用 fsync 操作", "commits": ["e0090c869"], "section": "服务器应用程序", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11", "source_hash": "1964db70ced9c40f3ed1959d3685826359e6ec662cf963bc52bf315ec744182f", "section_path": ["服务器应用程序"], "commit_groups": [["e0090c869"]], "identity_text": "Allow app-pgchecksums to disable fsync operations (Michaël Paquier) This is controlled by the --no-sync option.", "commit_aliases": ["e0090c869"], "source_commits": ["e0090c869"], "source_entry_id": "12.0/changes/131", "db_id": "6b62a649ee6c1d33f0397c6039e11bdd", "patch_ids": ["01d4059d7eb0c33a80dacfd34c4d721d"], "statement_hash": "b1e7a3f2387830c16802257756d8d5f881d2b41dce47722929ed3eb41871d3e1", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-fe97b6b217da23fc", "cves": [], "html": "<p>允许<a href=\"/docs/12/app-pgrewind.html\" title=\"pg_rewind\"><span><span>pg_rewind</span></span></a>禁用 fsync 操作（Michaël Paquier）<a href=\"https://postgr.es/c/8a00b96aa\">§</a></p>", "text": "允许pg_rewind禁用 fsync 操作（Michaël Paquier）§", "title": "允许pg_rewind禁用 fsync 操作", "commits": ["8a00b96aa"], "section": "服务器应用程序", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11", "source_hash": "dfb8f3f1d38d48d98444aaa4ca07f33696c208af07b97398ab2936333c8a0cf8", "section_path": ["服务器应用程序"], "commit_groups": [["8a00b96aa"]], "identity_text": "Allow app-pgrewind to disable fsync operations (Michaël Paquier)", "commit_aliases": ["8a00b96aa"], "source_commits": ["8a00b96aa"], "source_entry_id": "12.0/changes/132", "db_id": "1fe8a3d66d8a6cb9033efd97aa152e55", "patch_ids": ["235a28e7a91383eeabe77514336521e1"], "statement_hash": "77b62676357a372445263b021c8934b15694978bc72f6c972bce5d21dd9a6d8b", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-05a84bd68e2c5215", "cves": [], "html": "<p>修复<a href=\"/docs/12/pgtestfsync.html\" title=\"pg_test_fsync\"><span><span>pg_test_fsync</span></span></a>，使其在 <span>Windows</span> 上报告准确的 <code>open_datasync</code> 耗时（Laurenz Albe）<a href=\"https://postgr.es/c/0ba06e0bf\">§</a> <a href=\"https://postgr.es/c/40cfe8606\">§</a></p>", "text": "修复pg_test_fsync，使其在 Windows 上报告准确的 open_datasync 耗时（Laurenz Albe）§ §", "title": "修复pg_test_fsync，使其在 Windows 上报告准确的 open_datasync 耗时", "commits": ["0ba06e0bf", "40cfe8606"], "section": "服务器应用程序", "category": "bugfix", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11", "source_hash": "c60075fc37cead87d54a3b60812f1b45f1eb687bcf352e6eb9f15b88b51ae958", "section_path": ["服务器应用程序"], "commit_groups": [["0ba06e0bf"], ["40cfe8606"]], "identity_text": "Fix pgtestfsync to report accurate open_datasync durations on Windows (Laurenz Albe)", "commit_aliases": ["0ba06e0bf", "40cfe8606"], "source_commits": ["0ba06e0bf", "40cfe8606"], "source_entry_id": "12.0/changes/133", "db_id": "c1b538d638a5cdac6e56e9f8b867cd7b", "patch_ids": ["4e6816e84feba9b35aeafbed9a3f02fb", "fa00dcb8af1099cfe6a8cd14fdaa26ef"], "statement_hash": "d992ec52425da0f42f46239d33d9568d8e53ecf92e55a30df1484c8c85e3da78", "relations": [], "version": "12.0", "category_label": "BUG 修复", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-f2885d0aad849c1b", "cves": [], "html": "<p>当 <span>pg_dump</span> 通过 <code>INSERT</code> 命令而非 <code>COPY</code> 输出数据时，允许每条 <code>INSERT</code> 包含多行数据（Surafel Temesgen，David Rowley）<a href=\"https://postgr.es/c/7e413a0f8\">§</a> <a href=\"https://postgr.es/c/a193cbec1\">§</a></p>\n<p>控制此行为的选项为 <code>--rows-per-insert</code>。</p>", "text": "当 pg_dump 通过 INSERT 命令而非 COPY 输出数据时，允许每条 INSERT 包含多行数据（Surafel Temesgen，David Rowley）§ § 控制此行为的选项为 --rows-per-insert。", "title": "当 pg_dump 通过 INSERT 命令而非 COPY 输出数据时，允许每条 INSERT 包含多行数据", "commits": ["7e413a0f8", "a193cbec1"], "section": "服务器应用程序 / pg_dump, pg_dumpall, pg_restore", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11.3", "source_hash": "bddaed7dd4631760de88e8c0765f3246b864f659a17324c730640a0a23166612", "section_path": ["服务器应用程序", "pg_dump, pg_dumpall, pg_restore"], "commit_groups": [["7e413a0f8"], ["a193cbec1"]], "identity_text": "When pg_dump emits data with INSERT commands rather than COPY, allow more than one data row to be included in each INSERT (Surafel Temesgen, David Rowley) The option controlling this is --rows-per-insert.", "commit_aliases": ["7e413a0f8", "a193cbec1"], "source_commits": ["7e413a0f8", "a193cbec1"], "source_entry_id": "12.0/changes/134", "db_id": "d22c827b523f44ed5057e29626b56800", "patch_ids": ["3a82893db255c96c4cd45cfe8eb133ac", "ddf11a95fb21da81802503a14e22f954"], "statement_hash": "6355a4d009e74b09dc6215b983a9ae75500f9879007e2bb0ddcbf106dfdebf84", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-d2e91be2ea1bf00e", "cves": [], "html": "<p>允许 <span>pg_dump</span> 输出 <code>INSERT ... ON CONFLICT DO NOTHING</code>（Surafel Temesgen）<a href=\"https://postgr.es/c/387a5cfb9\">§</a></p>\n<p>这可避免恢复期间因冲突而失败。相应选项为 <code>--on-conflict-do-nothing</code>。</p>", "text": "允许 pg_dump 输出 INSERT ... ON CONFLICT DO NOTHING（Surafel Temesgen）§ 这可避免恢复期间因冲突而失败。相应选项为 --on-conflict-do-nothing。", "title": "允许 pg_dump 输出 INSERT ... ON CONFLICT DO NOTHING", "commits": ["387a5cfb9"], "section": "服务器应用程序 / pg_dump, pg_dumpall, pg_restore", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11.3", "source_hash": "b3548f311416335c81db0d4690f872fc09d9a0050d44bb3c3a30edfd79e55bcd", "section_path": ["服务器应用程序", "pg_dump, pg_dumpall, pg_restore"], "commit_groups": [["387a5cfb9"]], "identity_text": "Allow pg_dump to emit INSERT ... ON CONFLICT DO NOTHING (Surafel Temesgen) This avoids conflict failures during restore. The option is --on-conflict-do-nothing.", "commit_aliases": ["387a5cfb9"], "source_commits": ["387a5cfb9"], "source_entry_id": "12.0/changes/135", "db_id": "d37b0fdf1bb1c08d01ab8971f67da31e", "patch_ids": ["7571a466935fac482f3c62a6d1fefdd4"], "statement_hash": "f12d1c2dc939b07ad7e0a8a690632d5cec2b2282bc82ef01fc016421441eff20", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-dbabdb0ce559a893", "cves": [], "html": "<p>将并行 <span>pg_dump</span> 的操作顺序与后续并行 <span>pg_restore</span> 使用的顺序解耦（Tom Lane）<a href=\"https://postgr.es/c/548e50976\">§</a></p>\n<p>这使 <span>pg_restore</span> 能够以更充分的并行度执行恢复，尤其是在原始转储未并行执行的情况下。并行 <span>pg_dump</span> 的调度也有所改进。</p>", "text": "将并行 pg_dump 的操作顺序与后续并行 pg_restore 使用的顺序解耦（Tom Lane）§ 这使 pg_restore 能够以更充分的并行度执行恢复，尤其是在原始转储未并行执行的情况下。并行 pg_dump 的调度也有所改进。", "title": "将并行 pg_dump 的操作顺序与后续并行 pg_restore 使用的顺序解耦", "commits": ["548e50976"], "section": "服务器应用程序 / pg_dump, pg_dumpall, pg_restore", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11.3", "source_hash": "b778609f6a2763e9f4475773b79adc41cc02a954ecfc61c1caef41eed4584187", "section_path": ["服务器应用程序", "pg_dump, pg_dumpall, pg_restore"], "commit_groups": [["548e50976"]], "identity_text": "Decouple the order of operations in a parallel pg_dump from the order used by a subsequent parallel pg_restore (Tom Lane) This allows pg_restore to perform more-fully-parallelized parallel restores, especially in cases where the original dump was not done in parallel. Scheduling of a parallel pg_dump is also somewhat improved.", "commit_aliases": ["548e50976"], "source_commits": ["548e50976"], "source_entry_id": "12.0/changes/136", "db_id": "9ac2dd2d83983b11edb9741383f6d5a7", "patch_ids": ["2b44a3d19f343e081b49ab63e384aea9"], "statement_hash": "a271a2007dd879d7cba68b6cb44aefa78c027117dc7857af268d051c02a071af", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-5d8c01360cebe681", "cves": [], "html": "<p>允许为 <span>pg_dump</span> 和 <span>pg_dumpall</span> 指定<a href=\"/docs/12/runtime-config-client.html#GUC-EXTRA-FLOAT-DIGITS\">extra_float_digits</a>设置（Andrew Dunstan）<a href=\"https://postgr.es/c/af25bc03e\">§</a></p>\n<p>这主要用于生成能够在不同源服务器版本之间精确比较的转储。不建议在常规使用中这样做，因为恢复转储时可能丢失精度。</p>", "text": "允许为 pg_dump 和 pg_dumpall 指定extra_float_digits设置（Andrew Dunstan）§ 这主要用于生成能够在不同源服务器版本之间精确比较的转储。不建议在常规使用中这样做，因为恢复转储时可能丢失精度。", "title": "允许为 pg_dump 和 pg_dumpall 指定extra_float_digits设置", "commits": ["af25bc03e"], "section": "服务器应用程序 / pg_dump, pg_dumpall, pg_restore", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11.3", "source_hash": "e87a673e94faf5b17ec71709151920ef5d697d0b927230ebe35ee4be1b2b9311", "section_path": ["服务器应用程序", "pg_dump, pg_dumpall, pg_restore"], "commit_groups": [["af25bc03e"]], "identity_text": "Allow the guc-extra-float-digits setting to be specified for pg_dump and pg_dumpall (Andrew Dunstan) This is primarily useful for making dumps that are exactly comparable across different source server versions. It is not recommended for normal use, as it may result in loss of precision when the dump is restored.", "commit_aliases": ["af25bc03e"], "source_commits": ["af25bc03e"], "source_entry_id": "12.0/changes/137", "db_id": "95be938be35e54680ff3d63ac6955603", "patch_ids": ["655515ce83eaa999f57ae43f6863da7e"], "statement_hash": "3dbfd51c5a2c8e5b36cc76ebf5a33cd809201df0ba25fdcb2e368de839443455", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-21f197faa185c4a9", "cves": [], "html": "<p>为 <span>pg_dumpall</span> 添加 <code>--exclude-database</code> 选项（Andrew Dunstan）<a href=\"https://postgr.es/c/f092de050\">§</a></p>", "text": "为 pg_dumpall 添加 --exclude-database 选项（Andrew Dunstan）§", "title": "为 pg_dumpall 添加 --exclude-database 选项", "commits": ["f092de050"], "section": "服务器应用程序 / pg_dump, pg_dumpall, pg_restore", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11.3", "source_hash": "e30d5d3275f31b7098ab0e90b881cff02ef08a1a4eb1d0288926f917846ed668", "section_path": ["服务器应用程序", "pg_dump, pg_dumpall, pg_restore"], "commit_groups": [["f092de050"]], "identity_text": "Add --exclude-database option to pg_dumpall (Andrew Dunstan)", "commit_aliases": ["f092de050"], "source_commits": ["f092de050"], "source_entry_id": "12.0/changes/138", "db_id": "22456e3a76838cd7ec63b1570bab8334", "patch_ids": ["d6712f28971459dc993954699d4b98bf"], "statement_hash": "9035410880dcd0aa6c2e7d4be078665a03d36474a7010180a607cfc0d82b2124", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-d2bded59bfab02ad", "cves": [], "html": "<p>添加<a href=\"/docs/12/sql-create-access-method.html\" title=\"CREATE ACCESS METHOD\"><span>CREATE ACCESS METHOD</span></a>命令，用于创建新的表类型（Andres Freund，Haribabu Kommi，Álvaro Herrera，Alexander Korotkov，Dmitry Dolgov）<a href=\"https://postgr.es/c/4da597edf\">§</a> <a href=\"https://postgr.es/c/8586bf7ed\">§</a> <a href=\"https://postgr.es/c/3b925e905\">§</a> <a href=\"https://postgr.es/c/c2fe139c2\">§</a> <a href=\"https://postgr.es/c/5db6df0c0\">§</a> <a href=\"https://postgr.es/c/d25f51910\">§</a> <a href=\"https://postgr.es/c/d3a5fc17e\">§</a> <a href=\"https://postgr.es/c/73c954d24\">§</a> <a href=\"https://postgr.es/c/bfbcad478\">§</a></p>\n<p>这使开发新的<a href=\"/docs/12/tableam.html\" title=\"第 60 章 表访问方法接口定义\">表访问方法</a>成为可能，从而为不同使用场景优化存储。现有的 <code>heap</code> 访问方法仍是默认选项。</p>", "text": "添加CREATE ACCESS METHOD命令，用于创建新的表类型（Andres Freund，Haribabu Kommi，Álvaro Herrera，Alexander Korotkov，Dmitry Dolgov）§ § § § § § § § § 这使开发新的表访问方法成为可能，从而为不同使用场景优化存储。现有的 heap 访问方法仍是默认选项。", "title": "添加CREATE ACCESS METHOD命令，用于创建新的表类型", "commits": ["3b925e905", "4da597edf", "5db6df0c0", "73c954d24", "8586bf7ed", "bfbcad478", "c2fe139c2", "d25f51910", "d3a5fc17e"], "section": "源代码", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "c3dc92898446f8d716c453f95e50b8d73ba0955bf98451158b5247585052a81f", "section_path": ["源代码"], "commit_groups": [["3b925e905"], ["4da597edf"], ["5db6df0c0"], ["73c954d24"], ["8586bf7ed"], ["bfbcad478"], ["c2fe139c2"], ["d25f51910"], ["d3a5fc17e"]], "identity_text": "Add sql-create-access-method command to create new table types (Andres Freund, Haribabu Kommi, Álvaro Herrera, Alexander Korotkov, Dmitry Dolgov) This enables the development of new table access methods, which can optimize storage for different use cases. The existing heap access method remains the default.", "commit_aliases": ["3b925e905", "4da597edf", "5db6df0c0", "73c954d24", "8586bf7ed", "bfbcad478", "c2fe139c2", "d25f51910", "d3a5fc17e"], "source_commits": ["3b925e905", "4da597edf", "5db6df0c0", "73c954d24", "8586bf7ed", "bfbcad478", "c2fe139c2", "d25f51910", "d3a5fc17e"], "source_entry_id": "12.0/changes/139", "db_id": "e515e5370fa67143688d869434788a23", "patch_ids": ["0882f271d573ed97eb84984dc0b91280", "204573aa84b9df458fd84e2ca41308f8", "4b5d017f4f01e2a8515d1b7c86c94aad", "631e3410d937920e84f899f10b123a6b", "828c34029e60e731417e7a4016f9eeb4", "8a7f98ae3cc98b4694d9249d6bd9e0f1", "994461ca4c74603340eb987a4c064457", "adfa745762d26f2d2ef8abc3f60bffa4", "fb590b79dacf00560aa4b792ff9ca38c"], "statement_hash": "1fa8f711dac0788a9d7fd020aedae9cea3af2e2c7194be43f17e16a72519f893", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-e911f29920bc15d4", "cves": [], "html": "<p>添加<a href=\"/docs/12/xfunc-optimization.html\" title=\"37.11. 函数优化信息\">规划器支持函数</a>接口，以改进优化器对函数的估算、内联和索引使用（Tom Lane）<a href=\"https://postgr.es/c/1fb57af92\">§</a> <a href=\"https://postgr.es/c/a391ff3c3\">§</a> <a href=\"https://postgr.es/c/74dfe58a5\">§</a></p>\n<p>这允许扩展创建规划器支持函数，提供针对特定函数的选择率、代价和行数估算，这些估算可以依赖函数参数。支持函数还可以提供简化的表示和索引条件，大幅扩展优化的可能性。</p>", "text": "添加规划器支持函数接口，以改进优化器对函数的估算、内联和索引使用（Tom Lane）§ § § 这允许扩展创建规划器支持函数，提供针对特定函数的选择率、代价和行数估算，这些估算可以依赖函数参数。支持函数还可以提供简化的表示和索引条件，大幅扩展优化的可能性。", "title": "添加规划器支持函数接口，以改进优化器对函数的估算、内联和索引使用", "commits": ["1fb57af92", "74dfe58a5", "a391ff3c3"], "section": "源代码", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "2fec88a66bdd20182d8857c17d339c0e810461d03c31f0b1cd0cd7d0a2dd20b9", "section_path": ["源代码"], "commit_groups": [["1fb57af92"], ["74dfe58a5"], ["a391ff3c3"]], "identity_text": "Add planner support function interfaces to improve optimizer estimates, inlining, and indexing for functions (Tom Lane) This allows extensions to create planner support functions that can provide function-specific selectivity, cost, and row-count estimates that can depend on the function's arguments. Support functions can also supply simplified representations and index conditions, greatly expanding optimization possibilities.", "commit_aliases": ["1fb57af92", "74dfe58a5", "a391ff3c3"], "source_commits": ["1fb57af92", "74dfe58a5", "a391ff3c3"], "source_entry_id": "12.0/changes/140", "db_id": "852c2d9e0d22e1bfd695c303d812de98", "patch_ids": ["1eb34fc8eefc88301b430b0045e2baf2", "8bf46bad1becda768f3b1bcd39fec488", "beb0d0ab33e958d1b78c5b778cd98c9c"], "statement_hash": "978e917a3371935361250c11d7ef60692499766b0f17810b7c150afc1c7472e2", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-c562dc47a6ada0b5", "cves": [], "html": "<p>简化手动分配的 OID 的重新编号，并为此类 OID 的管理制定新的项目政策（John Naylor，Tom Lane）<a href=\"https://postgr.es/c/a6417078c\">§</a> <a href=\"https://postgr.es/c/3aa0395d4\">§</a></p>\n<p>为新的内置对象（如新函数）手动分配 OID 的补丁，现在应在 8000—9999 范围内随机选择 OID。在开发周期结束时，已提交补丁使用的 OID 将通过新的 <a href=\"/docs/12/system-catalog-initial-data.html#SYSTEM-CATALOG-OID-ASSIGNMENT\" title=\"70.2.2. OID 分配\"><code>renumber_oids.pl</code></a> 脚本重新编号为较小的数字，目前大约位于 4<em><code>xxx</code></em> 范围内。这种做法应能大幅降低不同开发中补丁之间发生 OID 冲突的概率。</p>\n<p>虽然没有专门为外部使用预留 OID 的政策，但建议分支项目及其他需要私有手动分配 OID 的项目，使用 7<em><code>xxx</code></em> 范围高端的编号。这将避免与最近合入的补丁冲突，而且核心项目应该要很久才会用到该范围。</p>", "text": "简化手动分配的 OID 的重新编号，并为此类 OID 的管理制定新的项目政策（John Naylor，Tom Lane）§ § 为新的内置对象（如新函数）手动分配 OID 的补丁，现在应在 8000—9999 范围内随机选择 OID。在开发周期结束时，已提交补丁使用的 OID 将通过新的 renumber_oids.pl 脚本重新编号为较小的数字，目前大约位于 4xxx 范围内。这种做法应能大幅降低不同开发中补丁之间发生 OID 冲突的概率。 虽然没有专门为外部使用预留 OID 的政策，但建议分支项目及其他需要私有手动分配 OID 的项目，使用 7xxx 范围高端的编号。这将避免与最近合入的补丁冲突，而且核心项目应该要很久才会用到该范围。", "title": "简化手动分配的 OID 的重新编号，并为此类 OID 的管理制定新的项目政策", "commits": ["3aa0395d4", "a6417078c"], "section": "源代码", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "ec9cf40c7a8fd08cc37604cbe6018d54feb0859e158878d1cca525380ece4ff1", "section_path": ["源代码"], "commit_groups": [["3aa0395d4"], ["a6417078c"]], "identity_text": "Simplify renumbering manually-assigned OIDs, and establish a new project policy for management of such OIDs (John Naylor, Tom Lane) Patches that manually assign OIDs for new built-in objects (such as new functions) should now randomly choose OIDs in the range 8000—9999. At the end of a development cycle, the OIDs used by committed patches will be renumbered down to lower numbers, currently somewhere in the 4xxx range, using the new renumber_oids.pl script. This approach should greatly reduce the odds of OID collisions between different in-process patches. While there is no specific policy reserving any OIDs for external use, it is recommended that forks and other projects needing private manually-assigned OIDs use numbers in the high 7xxx range. This will avoid conflicts with recently-merged patches, and it should be a long time before the core project reaches that range.", "commit_aliases": ["3aa0395d4", "a6417078c"], "source_commits": ["3aa0395d4", "a6417078c"], "source_entry_id": "12.0/changes/141", "db_id": "499b34b5ac0903313c04e8135a2fddbd", "patch_ids": ["1300de1624269fb9a976a2c830530cd0", "a8b22c19bd0c3df78707b5429759528c"], "statement_hash": "9abd8693857275534f1a3d26ce9464c1067b61d9ccc85e610f922e5a35233982", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-f3925751a3aa1538", "cves": [], "html": "<p>使用动态库而非静态库构建 <span>Cygwin</span> 二进制文件（Marco Atzeri）<a href=\"https://postgr.es/c/a33245a85\">§</a></p>", "text": "使用动态库而非静态库构建 Cygwin 二进制文件（Marco Atzeri）§", "title": "使用动态库而非静态库构建 Cygwin 二进制文件", "commits": ["a33245a85"], "section": "源代码", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "99a462b66670e9162f8c73812e6ed8c656020864d76be3acdb3c9ab15f243672", "section_path": ["源代码"], "commit_groups": [["a33245a85"]], "identity_text": "Build Cygwin binaries using dynamic instead of static libraries (Marco Atzeri)", "commit_aliases": ["a33245a85"], "source_commits": ["a33245a85"], "source_entry_id": "12.0/changes/142", "db_id": "20a353f28edeb7257874c5db1e742db7", "patch_ids": ["eea6b33f6e0dc696b10101d55394ebca"], "statement_hash": "d14cdfc217efb96fb24258ce765d40fad38139b8d6b9ac317e02f2c296a44582", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-d3f8a997308cd156", "cves": [], "html": "<p>移除 <span>configure</span> 开关 <code>--disable-strong-random</code>（Michaël Paquier）<a href=\"https://postgr.es/c/1707a0d2a\">§</a></p>\n<p>现在必须有强随机数源。</p>", "text": "移除 configure 开关 --disable-strong-random（Michaël Paquier）§ 现在必须有强随机数源。", "title": "移除 configure 开关 --disable-strong-random", "commits": ["1707a0d2a"], "section": "源代码", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "d09c0da117ffce1bcfb621caf531a324c91a4a5581d39f158ae5bf353cea40e5", "section_path": ["源代码"], "commit_groups": [["1707a0d2a"]], "identity_text": "Remove configure switch --disable-strong-random (Michaël Paquier) A strong random-number source is now required.", "commit_aliases": ["1707a0d2a"], "source_commits": ["1707a0d2a"], "source_entry_id": "12.0/changes/143", "db_id": "b535a7440b1204745b0f1abe95eccc8b", "patch_ids": ["17ce59fac67f817920814a79409a8fc7"], "statement_hash": "b37340a826eca7e80380e0764f9da44a647b5171d9130756840887a924bbd337", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-fef65908aa64c686", "cves": [], "html": "<p>在 Postgres 代码中，<code>printf</code> 系列函数以及 <code>strerror</code> 和 <code>strerror_r</code> 现在在各平台上行为一致（Tom Lane）<a href=\"https://postgr.es/c/96bf88d52\">§</a> <a href=\"https://postgr.es/c/26e9d4d4e\">§</a> <a href=\"https://postgr.es/c/758ce9b77\">§</a> <a href=\"https://postgr.es/c/d6c55de1f\">§</a></p>\n<p>特别是，<code>printf</code> 在所有平台上都能理解 <code>%m</code>；在 Windows 上，<code>strerror</code> 能够处理 Winsock 错误码（以前仅在后端代码中支持，前端代码不支持）；<code>strerror_r</code> 则始终遵循 GNU 的返回约定。</p>", "text": "在 Postgres 代码中，printf 系列函数以及 strerror 和 strerror_r 现在在各平台上行为一致（Tom Lane）§ § § § 特别是，printf 在所有平台上都能理解 %m；在 Windows 上，strerror 能够处理 Winsock 错误码（以前仅在后端代码中支持，前端代码不支持）；strerror_r 则始终遵循 GNU 的返回约定。", "title": "在 Postgres 代码中，printf 系列函数以及 strerror 和 strerror_r 现在在各平台上行为一致", "commits": ["26e9d4d4e", "758ce9b77", "96bf88d52", "d6c55de1f"], "section": "源代码", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "fcf39e5f007dfaffb006c811ef6617de87554210522a311ec453f229ccd326a1", "section_path": ["源代码"], "commit_groups": [["26e9d4d4e"], ["758ce9b77"], ["96bf88d52"], ["d6c55de1f"]], "identity_text": "printf-family functions, as well as strerror and strerror_r, now behave uniformly across platforms within Postgres code (Tom Lane) Notably, printf understands %m everywhere; on Windows, strerror copes with Winsock error codes (it used to do so in backend but not frontend code); and strerror_r always follows the GNU return convention.", "commit_aliases": ["26e9d4d4e", "758ce9b77", "96bf88d52", "d6c55de1f"], "source_commits": ["26e9d4d4e", "758ce9b77", "96bf88d52", "d6c55de1f"], "source_entry_id": "12.0/changes/144", "db_id": "7e56a0f4f3bc45b1841be6d37f00bd60", "patch_ids": ["3b01c5e9b781c02ce44967d10b0c103f", "688076681e70b133f976e80357509864", "d070d5fc9bef53e5f1f041ad7ff64f5e", "fa997b822641bb7fe1b9dfcc8581dc44"], "statement_hash": "1cd250e63b77a40568517f5a72af5ed893aeadf7162ab8fd862683930a3a192b", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-d81abfd3f5c1dee8", "cves": [], "html": "<p>要求符合 C99 的编译器，并在 <span>Windows</span> 上要求 <acronym>MSVC</acronym> 2013 或更高版本（Andres Freund）<a href=\"https://postgr.es/c/d9dd406fe\">§</a></p>", "text": "要求符合 C99 的编译器，并在 Windows 上要求 MSVC 2013 或更高版本（Andres Freund）§", "title": "要求符合 C99 的编译器，并在 Windows 上要求 MSVC 2013 或更高版本", "commits": ["d9dd406fe"], "section": "源代码", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "f9af1b8166fb39f2e564b46b51faf01ea6e062816b993a2968bc2bb4d1da9c32", "section_path": ["源代码"], "commit_groups": [["d9dd406fe"]], "identity_text": "Require a C99-compliant compiler, and MSVC 2013 or later on Windows (Andres Freund)", "commit_aliases": ["d9dd406fe"], "source_commits": ["d9dd406fe"], "source_entry_id": "12.0/changes/145", "db_id": "b7ddeb1560beac985f2244eba3c95ba7", "patch_ids": ["6f8af7dc3e34b40e55d39201013c04e4"], "statement_hash": "edaabd52e5ea772074581dd5a8e0f547d30b874df60cc85c4162d278c80748b4", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-1035e5f57e930abf", "cves": [], "html": "<p>使用 <span>pandoc</span> 代替 <span>lynx</span> 生成纯文本文档输出文件（Peter Eisentraut）<a href=\"https://postgr.es/c/96b8b8b6f\">§</a> <a href=\"https://postgr.es/c/2488ea7a9\">§</a></p>\n<p>这仅影响 <code>make dist</code> 期间生成的 <code>INSTALL</code> 文件，以及很少使用的纯文本输出文件 <code>postgres.txt</code>。Pandoc 的输出优于 lynx，并能避免某些区域设置/编码问题。需要 Pandoc 1.13 或更高版本。</p>", "text": "使用 pandoc 代替 lynx 生成纯文本文档输出文件（Peter Eisentraut）§ § 这仅影响 make dist 期间生成的 INSTALL 文件，以及很少使用的纯文本输出文件 postgres.txt。Pandoc 的输出优于 lynx，并能避免某些区域设置/编码问题。需要 Pandoc 1.13 或更高版本。", "title": "使用 pandoc 代替 lynx 生成纯文本文档输出文件", "commits": ["2488ea7a9", "96b8b8b6f"], "section": "源代码", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "185fdac17525bd1d4c2792b74203f793e48d42140b2027cd800c274216bbb65e", "section_path": ["源代码"], "commit_groups": [["2488ea7a9"], ["96b8b8b6f"]], "identity_text": "Use pandoc, not lynx, for generating plain-text documentation output files (Peter Eisentraut) This affects only the INSTALL file generated during make dist and the seldom-used plain-text postgres.txt output file. Pandoc produces better output than lynx and avoids some locale/encoding issues. Pandoc version 1.13 or later is required.", "commit_aliases": ["2488ea7a9", "96b8b8b6f"], "source_commits": ["2488ea7a9", "96b8b8b6f"], "source_entry_id": "12.0/changes/146", "db_id": "de1e63479c27466c61b369ca8e7973e3", "patch_ids": ["26fc6e98ba380a96f1e8819e19bd4e4e", "b3742c7ec8650877d1e3773e213b6d38"], "statement_hash": "2153f829ec1d38b5c59e17497c372236feab5278dedf7f34e8fe772a1232ba47", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-90657d2176648af7", "cves": [], "html": "<p>支持在 <span>PostgreSQL</span> 文档中使用图像（Jürgen Purtz）<a href=\"https://postgr.es/c/ea55aec0a\">§</a></p>", "text": "支持在 PostgreSQL 文档中使用图像（Jürgen Purtz）§", "title": "支持在 PostgreSQL 文档中使用图像", "commits": ["ea55aec0a"], "section": "源代码", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "c8bfc49cc0cebe689e0e1b0c2da614592925c481e5590d3ca78f6dc2299c27da", "section_path": ["源代码"], "commit_groups": [["ea55aec0a"]], "identity_text": "Support use of images in the PostgreSQL documentation (Jürgen Purtz)", "commit_aliases": ["ea55aec0a"], "source_commits": ["ea55aec0a"], "source_entry_id": "12.0/changes/147", "db_id": "7e1c41f8b091b25e815f750ef8b5ff0c", "patch_ids": ["f5bad8fd5c5ca11369839c15edbb2b92"], "statement_hash": "709d7e9349583e768f060ada2f66bf6a5b8f85c86adecef0fc04e1eef467c1ad", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-f2c936d6c49be4e3", "cves": [], "html": "<p>允许在更多情况下将 <code>ORDER BY</code> 排序和 <code>LIMIT</code> 子句下推到<a href=\"/docs/12/postgres-fdw.html\" title=\"F.33. postgres_fdw\">postgres_fdw</a>外部服务器（Etsuro Fujita）<a href=\"https://postgr.es/c/ffab494a4\">§</a> <a href=\"https://postgr.es/c/d50d172e5\">§</a></p>", "text": "允许在更多情况下将 ORDER BY 排序和 LIMIT 子句下推到postgres_fdw外部服务器（Etsuro Fujita）§ §", "title": "允许在更多情况下将 ORDER BY 排序和 LIMIT 子句下推到postgres_fdw外部服务器", "commits": ["d50d172e5", "ffab494a4"], "section": "附加模块", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "abad846399789c715b060306a56d3f2f30eec23f52d39eafe2259c2fee114060", "section_path": ["附加模块"], "commit_groups": [["d50d172e5"], ["ffab494a4"]], "identity_text": "Allow ORDER BY sorts and LIMIT clauses to be pushed to postgres-fdw foreign servers in more cases (Etsuro Fujita)", "commit_aliases": ["d50d172e5", "ffab494a4"], "source_commits": ["d50d172e5", "ffab494a4"], "source_entry_id": "12.0/changes/148", "db_id": "6bfef9f427b9e111487f09baffa940a6", "patch_ids": ["774b81225db3f71ec011f3db27800155", "99e8764a5e470b2ee66db08bcf61da2a"], "statement_hash": "0e1abfa1b44a512d83918e3dd19a895ecdc04502fce5e694537fc333046d7573", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-866019c1dc1f3064", "cves": [], "html": "<p>改进优化器对 <span>postgres_fdw</span> 查询的代价计算（Etsuro Fujita）<a href=\"https://postgr.es/c/f8f6e4467\">§</a> <a href=\"https://postgr.es/c/fd1afdbaf\">§</a> <a href=\"https://postgr.es/c/edbcbe277\">§</a></p>", "text": "改进优化器对 postgres_fdw 查询的代价计算（Etsuro Fujita）§ § §", "title": "改进优化器对 postgres_fdw 查询的代价计算", "commits": ["edbcbe277", "f8f6e4467", "fd1afdbaf"], "section": "附加模块", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "f843d917da4c68fd9fbb055187679e8f5fb16d4b5e75feb0270bf1afa2a21746", "section_path": ["附加模块"], "commit_groups": [["edbcbe277"], ["f8f6e4467"], ["fd1afdbaf"]], "identity_text": "Improve optimizer cost accounting for postgres_fdw queries (Etsuro Fujita)", "commit_aliases": ["edbcbe277", "f8f6e4467", "fd1afdbaf"], "source_commits": ["edbcbe277", "f8f6e4467", "fd1afdbaf"], "source_entry_id": "12.0/changes/149", "db_id": "4fc19b78c4dd0c1497328a27689dde81", "patch_ids": ["001b63b7a2b500ffb77fea94b59523d8", "3635250eaaa30d70c1fd1a9549e4dc5f", "601a1be8e3120eea4547c9d48e42bbc1"], "statement_hash": "3e40577eb30986dc4c0869bda6ba6c7f5fa11836006f92a7f30f77b0a115d603", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-9aca17db3112c5ec", "cves": [], "html": "<p>正确遵循引用 <span>postgres_fdw</span> 表的视图上的 <code>WITH CHECK OPTION</code>（Etsuro Fujita）<a href=\"https://postgr.es/c/a45adc747\">§</a></p>\n<p>虽然 <span>postgres_fdw</span> 表上的 <code>CHECK OPTION</code> 会被忽略（因为引用的是外部表），但此类表上的视图被视为本地视图，因此此更改会对它们实施 <code>CHECK OPTION</code>。以前，只有带有 <code>RETURNING</code> 子句且返回了 <code>CHECK OPTION</code> 值的 <code>INSERT</code> 和 <code>UPDATE</code> 才会得到验证。</p>", "text": "正确遵循引用 postgres_fdw 表的视图上的 WITH CHECK OPTION（Etsuro Fujita）§ 虽然 postgres_fdw 表上的 CHECK OPTION 会被忽略（因为引用的是外部表），但此类表上的视图被视为本地视图，因此此更改会对它们实施 CHECK OPTION。以前，只有带有 RETURNING 子句且返回了 CHECK OPTION 值的 INSERT 和 UPDATE 才会得到验证。", "title": "正确遵循引用 postgres_fdw 表的视图上的 WITH CHECK OPTION", "commits": ["a45adc747"], "section": "附加模块", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "35322f2b4bb440070c72f03f6a2effeb2c81f6adf9b1d358f72d8ec1594133b8", "section_path": ["附加模块"], "commit_groups": [["a45adc747"]], "identity_text": "Properly honor WITH CHECK OPTION on views that reference postgres_fdw tables (Etsuro Fujita) While CHECK OPTIONs on postgres_fdw tables are ignored (because the reference is foreign), views on such tables are considered local, so this change enforces CHECK OPTIONs on them. Previously, only INSERTs and UPDATEs with RETURNING clauses that returned CHECK OPTION values were validated.", "commit_aliases": ["a45adc747"], "source_commits": ["a45adc747"], "source_entry_id": "12.0/changes/150", "db_id": "b22e484fb829220655817e6e5eec037c", "patch_ids": ["d621af7fb1e8939b61b021338c9fe8d3"], "statement_hash": "c9e2313d878c76802119385d0e6884d685ef28ab354fd8f969526c810c7400af", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-58fb46a0059fe154", "cves": [], "html": "<p>允许 <a href=\"/docs/12/pgstatstatements.html\" title=\"F.29. pg_stat_statements\"><code>pg_stat_statements_reset()</code></a> 提供更细的控制粒度（Haribabu Kommi，Amit Kapila）<a href=\"https://postgr.es/c/43cbedab8\">§</a></p>\n<p>此函数现在允许重置特定数据库、用户和查询的统计信息。</p>", "text": "允许 pg_stat_statements_reset() 提供更细的控制粒度（Haribabu Kommi，Amit Kapila）§ 此函数现在允许重置特定数据库、用户和查询的统计信息。", "title": "允许 pg_stat_statements_reset() 提供更细的控制粒度", "commits": ["43cbedab8"], "section": "附加模块", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "2bdecb4505f3a2d6cde358f84888aab9bdeaecd0a66e634adfd389cb03e1b80d", "section_path": ["附加模块"], "commit_groups": [["43cbedab8"]], "identity_text": "Allow pg_stat_statements_reset() to be more granular (Haribabu Kommi, Amit Kapila) The function now allows reset of statistics for specific databases, users, and queries.", "commit_aliases": ["43cbedab8"], "source_commits": ["43cbedab8"], "source_entry_id": "12.0/changes/151", "db_id": "f7b4c264fb7b89097ccb11af182345b7", "patch_ids": ["3565706cb2fcccf0a9cd34ef3ac4b777"], "statement_hash": "cc326070a646dbff6f0ffae86fff85128cccadbd6566a293c279da26c6562107", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-ee4b1d419ba2b03e", "cves": [], "html": "<p>允许控制<a href=\"/docs/12/auto-explain.html\" title=\"F.4. auto_explain\">auto_explain</a>的日志级别（Tom Dunstan，Andrew Dunstan）<a href=\"https://postgr.es/c/2d36a5e9d\">§</a></p>\n<p>默认值为 <code>LOG</code>。</p>", "text": "允许控制auto_explain的日志级别（Tom Dunstan，Andrew Dunstan）§ 默认值为 LOG。", "title": "允许控制auto_explain的日志级别", "commits": ["2d36a5e9d"], "section": "附加模块", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "1ecaeff852799d5bbcca00e3009b6028ebfe3cee8c2728ad986b83e180804454", "section_path": ["附加模块"], "commit_groups": [["2d36a5e9d"]], "identity_text": "Allow control of the auto-explain log level (Tom Dunstan, Andrew Dunstan) The default is LOG.", "commit_aliases": ["2d36a5e9d"], "source_commits": ["2d36a5e9d"], "source_entry_id": "12.0/changes/152", "db_id": "1adce5d1232dd3984f613bf74cda3b50", "patch_ids": ["02e9f93316b4d1ea09c6a59901eba611"], "statement_hash": "192a9997a27fe768fb32fa1b14aa83f3003bfd48d34d7798b28c7644bb529d2c", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-56326a9d0e30093c", "cves": [], "html": "<p>用新的标点和符号更新<a href=\"/docs/12/unaccent.html\" title=\"F.43. unaccent\">unaccent</a>规则（Hugh Ranalli，Michaël Paquier）<a href=\"https://postgr.es/c/e1c1d5444\">§</a></p>", "text": "用新的标点和符号更新unaccent规则（Hugh Ranalli，Michaël Paquier）§", "title": "用新的标点和符号更新unaccent规则", "commits": ["e1c1d5444"], "section": "附加模块", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "026c7892d3c6ec031eac35fc92aa7b767a4dd08e1d73d6202499a3957d87d2d3", "section_path": ["附加模块"], "commit_groups": [["e1c1d5444"]], "identity_text": "Update unaccent rules with new punctuation and symbols (Hugh Ranalli, Michaël Paquier)", "commit_aliases": ["e1c1d5444"], "source_commits": ["e1c1d5444"], "source_entry_id": "12.0/changes/153", "db_id": "10434220fad81e02a244c3570f912ce4", "patch_ids": ["bce93ad77c05eb49c67eba6dc1600c15"], "statement_hash": "d6ae01be6cb24f18c0196f6a517fe133b2e4c5dd6b6073f7e7bbe065b9facccc", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-5ca36097a47ab397", "cves": [], "html": "<p>允许 <span>unaccent</span> 处理某些以组合字符编码的重音（Hugh Ranalli）<a href=\"https://postgr.es/c/456e3718e\">§</a></p>", "text": "允许 unaccent 处理某些以组合字符编码的重音（Hugh Ranalli）§", "title": "允许 unaccent 处理某些以组合字符编码的重音", "commits": ["456e3718e"], "section": "附加模块", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "a862d81dfe601844d993b376299de4101f14b36c637121d5b1e4d146d08e2b8e", "section_path": ["附加模块"], "commit_groups": [["456e3718e"]], "identity_text": "Allow unaccent to handle some accents encoded as combining characters (Hugh Ranalli)", "commit_aliases": ["456e3718e"], "source_commits": ["456e3718e"], "source_entry_id": "12.0/changes/154", "db_id": "01cfd5de8d82ca148ac8efe51039a030", "patch_ids": ["25d7862623d227887fd4f33cb8207069"], "statement_hash": "51c64225ac43562e79f77bb0ac89cbdcd3feeb4c57afce08802a13e38c2e101f", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-6e87438c6320cc29", "cves": [], "html": "<p>允许 <span>unaccent</span> 移除希腊字符的重音（Tasos Maschalidis）<a href=\"https://postgr.es/c/5e8d670c3\">§</a></p>", "text": "允许 unaccent 移除希腊字符的重音（Tasos Maschalidis）§", "title": "允许 unaccent 移除希腊字符的重音", "commits": ["5e8d670c3"], "section": "附加模块", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "ab3387fde3e1c381599fa5d4a93af400ddf8cb0fc3817110da301c839e010efe", "section_path": ["附加模块"], "commit_groups": [["5e8d670c3"]], "identity_text": "Allow unaccent to remove accents from Greek characters (Tasos Maschalidis)", "commit_aliases": ["5e8d670c3"], "source_commits": ["5e8d670c3"], "source_entry_id": "12.0/changes/155", "db_id": "400401783b3ced94f33f916793904680", "patch_ids": ["53a8efd0d2408cab7378d129b0c10e35"], "statement_hash": "b804a900b1da5e4bebb7b96594b3ded176993f59f60643414435ebf43a9ffed1", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-edbecc78936474e2", "cves": [], "html": "<p>为<a href=\"/docs/12/amcheck.html\" title=\"F.2. amcheck\">amcheck</a>的 <code>bt_index_parent_check()</code> 函数添加参数，以从树根开始检查每个索引元组（Peter Geoghegan）<a href=\"https://postgr.es/c/c1afd175b\">§</a></p>", "text": "为amcheck的 bt_index_parent_check() 函数添加参数，以从树根开始检查每个索引元组（Peter Geoghegan）§", "title": "为amcheck的 bt_index_parent_check() 函数添加参数，以从树根开始检查每个索引元组", "commits": ["c1afd175b"], "section": "附加模块", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "beffe773650ba7eb1980bf9cf9b750bda11ee1f3bcb71c8d8571ca615efe718c", "section_path": ["附加模块"], "commit_groups": [["c1afd175b"]], "identity_text": "Add a parameter to amcheck 's bt_index_parent_check() function to check each index tuple from the root of the tree (Peter Geoghegan)", "commit_aliases": ["c1afd175b"], "source_commits": ["c1afd175b"], "source_entry_id": "12.0/changes/156", "db_id": "f5a55d6f90ee9d49c6a5668bfe24182e", "patch_ids": ["911bcb21f390588cd03c683f29359ede"], "statement_hash": "9c75b8fb03af34a6bbb911cb566d8450ee37568df94cb1d0fbde67325e45a175", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}, {"id": "12.0-d47f10517259078f", "cves": [], "html": "<p>改进<a href=\"/docs/12/oid2name.html\" title=\"oid2name\"><span>oid2name</span></a>和<a href=\"/docs/12/vacuumlo.html\" title=\"vacuumlo\"><span><span>vacuumlo</span></span></a>的选项处理，使其与其他命令一致（Tatsuro Yamada）<a href=\"https://postgr.es/c/1aaf532de\">§</a> <a href=\"https://postgr.es/c/bfea331a5\">§</a></p>", "text": "改进oid2name和vacuumlo的选项处理，使其与其他命令一致（Tatsuro Yamada）§ §", "title": "改进oid2name和vacuumlo的选项处理，使其与其他命令一致", "commits": ["1aaf532de", "bfea331a5"], "section": "附加模块", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "63e31a7ae6a22a2e6b39ba5c99cf1466f9dbe0dff8768d29216ee1e4489845e2", "section_path": ["附加模块"], "commit_groups": [["1aaf532de"], ["bfea331a5"]], "identity_text": "Improve oid2name and vacuumlo option handling to match other commands (Tatsuro Yamada)", "commit_aliases": ["1aaf532de", "bfea331a5"], "source_commits": ["1aaf532de", "bfea331a5"], "source_entry_id": "12.0/changes/157", "db_id": "eb38e3ec58f9996ef1fac7ae8307d028", "patch_ids": ["2ee7f18e0ed069187dda98edd22b90d6", "649dc2557f258d5162b1697b2168258c"], "statement_hash": "d20ac956962d5553a001b38e3eb5c924a8bd43c5c0a1a22defaedf28af729c8d", "relations": [], "version": "12.0", "category_label": "新功能", "also_in": [], "variants": [], "related_changes": []}]}], "stats": [{"key": "all", "label": "全部变更", "count": 180}, {"key": "feature", "label": "新功能", "count": 139}, {"key": "bugfix", "label": "BUG 修复", "count": 4}, {"key": "security", "label": "安全相关", "count": 0}, {"key": "performance", "label": "性能改进", "count": 14}, {"key": "compatibility", "label": "兼容性变化", "count": 23}, {"key": "improvement", "label": "其他改进", "count": 0}], "total": 180, "release_count": 1, "cross_major": false, "cve_count": 0, "cves": [], "cve_available": true, "remaining_cves": [], "security_regressions": [], "warnings": [], "candidate_count": 180, "already_in_source_count": 0, "duplicate_count": 0, "excluded_count": 0, "exclusions": [], "source_as_of": "2026-09-26", "security_as_of": "2026-09-26"}