{"already_in_source_count":0,"candidate_count":83,"cross_major":false,"cve_available":true,"cve_count":31,"cves":[{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.23"},{"from":"15","until":"15.18"},{"from":"16","until":"16.14"},{"from":"17","until":"17.10"},{"from":"18","until":"18.4"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-6637","component":"contrib module","cvss_version":"3.0","description_en":"Stack buffer overflow in PostgreSQL module \"refint\" allows an unprivileged database user to execute arbitrary code as the operating system user running the database. A distinct attack is possible if the application declares a user-controlled column as a \"refint\" cascade primary key and facilitates user-controlled updates to that column. In that case, a SQL injection allows a primary key update value provider to execute arbitrary SQL as the database user performing the primary key update. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.","first_published":"2026-05-14","fixed":{"14":"14.23","15":"15.18","16":"16.14","17":"17.10","18":"18.4"},"fixed_version":"14.23","id":"CVE-2026-6637","introduced":{},"published":{"14":"2026-05-14","15":"2026-05-14","16":"2026-05-14","17":"2026-05-14","18":"2026-05-14"},"score":8.8,"title":"避免 contrib/refint 的 check_foreign_key() 中解引用 NULL 指针","url":"https://www.postgresql.org/support/security/CVE-2026-6637/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.23"},{"from":"15","until":"15.18"},{"from":"16","until":"16.14"},{"from":"17","until":"17.10"},{"from":"18","until":"18.4"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-6473","component":"core server","cvss_version":"3.0","description_en":"Integer wraparound in multiple PostgreSQL server features allows an unprivileged database user to cause the server to undersize an allocation and write out-of-bounds. This may execute arbitrary code as the operating system user running the database. In applications that pass gigabyte-scale user inputs to the relevant database functions, the application input provider may achieve a segmentation fault. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.","first_published":"2026-05-14","fixed":{"14":"14.23","15":"15.18","16":"16.14","17":"17.10","18":"18.4"},"fixed_version":"14.23","id":"CVE-2026-6473","introduced":{},"published":{"14":"2026-05-14","15":"2026-05-14","16":"2026-05-14","17":"2026-05-14","18":"2026-05-14"},"score":8.8,"title":"修复 PL/Perl 和 PL/Tcl 内存分配计算中的整数溢出","url":"https://www.postgresql.org/support/security/CVE-2026-6473/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-19385","component":"client","cvss_version":"3.0","description_en":"Heap buffer overflow in PostgreSQL pg_dump of long function transform lists allows an object creator to execute arbitrary code as the operating system user running pg_dump, via a crafted transform list. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-19385","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":8.8,"title":"移除 pg_dump 关于 pg_proc.protrftypes 不可能包含超过 FUNC_MAX_ARGS 个条目的假设","url":"https://www.postgresql.org/support/security/CVE-2026-19385/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-18408","component":"client","cvss_version":"3.0","description_en":"Untrusted data inclusion in pg_dump in PostgreSQL allows a malicious superuser of the origin server to inject arbitrary code for restore-time execution as the client operating system account running psql to restore the dump, via psql \\restrict meta-command input expansion. The fix for CVE-2025-8714 introduced \\restrict and \\unrestrict to block this attack, but \\unrestrict itself was sufficient for an attack. pg_dumpall is also affected. pg_restore is affected when used to generate a plain-format dump. Non-core use of \\restrict would be affected, but we've not identified non-core use. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-18408","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":8.8,"title":"不要对 psql 的 \\unrestrict 命令参数执行反引号扩展","url":"https://www.postgresql.org/support/security/CVE-2026-18408/","vector":"AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-16239","component":"core server","cvss_version":"3.0","description_en":"Type confusion in PostgreSQL \"portal\"/cursor lifecycle allows a user to execute arbitrary code as the operating system user running the database, via re-creation of a cursor or other portal with different types. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-16239","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":8.8,"title":"交叉检查运行 EXECUTE 或 FETCH 的 portal 的输出行类型","url":"https://www.postgresql.org/support/security/CVE-2026-16239/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"},{"affected":{"18":"18"},"affected_ranges":[{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-16238","component":"core server","cvss_version":"3.0","description_en":"Type confusion in PostgreSQL pg_restore_attribute_stats() allows an object creator to execute arbitrary code as the operating system user running the database, via conflation of range and multirange values. Within major version 18, minor versions before PostgreSQL 18.6 are affected. Versions before PostgreSQL 18 are unaffected.","first_published":"2026-08-13","fixed":{"18":"18.6"},"fixed_version":"","id":"CVE-2026-16238","introduced":{},"published":{"18":"2026-08-13"},"score":8.8,"title":"修复 pg_restore_attribute_stats() 对多范围类型的处理","url":"https://www.postgresql.org/support/security/CVE-2026-16238/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-15742","component":"contrib module","cvss_version":"3.0","description_en":"Integer wraparound in PostgreSQL fuzzystrmatch allows a user to direct writes to a huge range of addresses, executing arbitrary code as the operating system user running the database, via extreme inputs to SQL function levenshtein() or levenshtein_less_equal(). Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-15742","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":8.8,"title":"修复 contrib/fuzzystrmatch 的 levenshtein() 和 levenshtein_less_equal() 函数中的整数溢出","url":"https://www.postgresql.org/support/security/CVE-2026-15742/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-15741","component":"core server","cvss_version":"3.0","description_en":"SQL injection in PostgreSQL EXTRACT() deparse allows an object owner to execute arbitrary SQL as a superuser via a hostile object definition. Attacks affect expression deparse consumers broadly, including pg_dump, psql commands like \\sf, and any similar usage in non-core tools. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-15741","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":8.8,"title":"逆解析 EXTRACT() 函数调用时，按需为字段名加引号","url":"https://www.postgresql.org/support/security/CVE-2026-15741/","vector":"AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-14680","component":"core server","cvss_version":"3.0","description_en":"Type confusion with PostgreSQL \"internal\" data type arguments allows any user to execute arbitrary code as the operating system user running the database, via calls to functions with that argument type. Type \"internal\" represents a class of mutually-incompatible data structures not intended for access from SQL. The system intended to prevent such function calls, but this prevention had gaps. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-14680","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":8.8,"title":"拒绝从 SQL 调用接受或返回 internal 类型的函数","url":"https://www.postgresql.org/support/security/CVE-2026-14680/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-14677","component":"core server","cvss_version":"3.0","description_en":"Integer wraparound in PostgreSQL 32-bit builds of pltcl and plperl allows an object creator to cause the server to undersize an allocation and write out-of-bounds via crafted function bodies. This may execute arbitrary code as the operating system user running the database. CVE-2026-6473 had fixed similar problems. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-14677","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":8.8,"title":"修复 PL/Perl 和 PL/Tcl 内存分配计算中的整数溢出","url":"https://www.postgresql.org/support/security/CVE-2026-14677/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"},{"affected":{"18":"18"},"affected_ranges":[{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-14676","component":"contrib module","cvss_version":"3.0","description_en":"Heap buffer overflow in PostgreSQL pg_stat_statements allows the query author to execute arbitrary code as the operating system user running the database, via crafted queries containing array constants. Within major version 18, minor versions before PostgreSQL 18.6 are affected. Versions before PostgreSQL 18 are unaffected.","first_published":"2026-08-13","fixed":{"18":"18.6"},"fixed_version":"","id":"CVE-2026-14676","introduced":{},"published":{"18":"2026-08-13"},"score":8.8,"title":"修复 contrib/pg_stat_statements 中的缓冲区越界写入","url":"https://www.postgresql.org/support/security/CVE-2026-14676/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-14671","component":"contrib module","cvss_version":"3.0","description_en":"Type confusion in PostgreSQL module \"refint\" allows an object creator to execute arbitrary code as the operating system user running the database. The fix for this emerged as a non-security bug report, and the fix appear in the git repository with subject \"refint: Remove plan cache.\", without a CVE number. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-14671","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":8.8,"title":"移除 contrib/refint 中的计划缓存","url":"https://www.postgresql.org/support/security/CVE-2026-14671/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-14670","component":"core server","cvss_version":"3.0","description_en":"Heap buffer overflow in PostgreSQL plperl return of a tied hash allows the function owner to execute arbitrary code as the operating system user running the database, via a crafted function body. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-14670","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":8.8,"title":"增强 PL/Perl 对“tied” Perl 数组和 hash 的防护","url":"https://www.postgresql.org/support/security/CVE-2026-14670/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-14669","component":"core server","cvss_version":"3.0","description_en":"Heap buffer overflow in PostgreSQL to_char(timestamptz) allows the party choosing the timezone to execute arbitrary code as the operating system user running the database, via a long POSIX timezone abbreviation. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-14669","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":8.8,"title":"修复 to_char() 处理过长时区缩写时发生的缓冲区越界写入","url":"https://www.postgresql.org/support/security/CVE-2026-14669/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-14664","component":"core server","cvss_version":"3.0","description_en":"Heap buffer overflow in PostgreSQL regexp allows the query author to execute arbitrary code as the operating system user running the database, via text that would not pass encoding validation. This shares heritage with CVE-2026-2006, but this case involved unanticipated data growth when round-tripped through pg_wchar. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-14664","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":8.8,"title":"修复正则表达式匹配/拆分函数中的缓冲区越界写入","url":"https://www.postgresql.org/support/security/CVE-2026-14664/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-14662","component":"core server","cvss_version":"3.0","description_en":"Integer wraparound in PostgreSQL tsvector and tsquery data type functions allows an unprivileged database user to cause the server to undersize an allocation and write out-of-bounds, via crafted large inputs. This may execute arbitrary code as the operating system user running the database. These types are typically sourced from application logic, not taken from the application's user. Hence, application users attacking the database, through the application as a conduit, are unlikely. CVE-2026-6473 had fixed similar problems. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-14662","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":8.8,"title":"增强 tsvector 和 tsquery 代码对超长值的防护（包括单个词位以及向量/查询的总长度）","url":"https://www.postgresql.org/support/security/CVE-2026-14662/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"},{"affected":{"13":"13","14":"14","15":"15","16":"16","17":"17"},"affected_ranges":[{"from":"0","until":"13.22"},{"from":"14","until":"14.19"},{"from":"15","until":"15.14"},{"from":"16","until":"16.10"},{"from":"17","until":"17.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2025-8714","component":"core server","cvss_version":"3.0","description_en":"Untrusted data inclusion in pg_dump in PostgreSQL allows a malicious superuser of the origin server to inject arbitrary code for restore-time execution as the client operating system account running psql to restore the dump, via psql meta-commands. pg_dumpall is also affected. pg_restore is affected when used to generate a plain-format dump. This is similar to MySQL CVE-2024-21096. Versions before PostgreSQL 17.6, 16.10, 15.14, 14.19, and 13.22 are affected.","first_published":"2025-08-14","fixed":{"13":"13.22","14":"14.19","15":"15.14","16":"16.10","17":"17.6"},"fixed_version":"14.19","id":"CVE-2025-8714","introduced":{},"published":{"13":"2025-08-14","14":"2025-08-14","15":"2025-08-14","16":"2025-08-14","17":"2025-08-14"},"score":8.8,"title":"不要对 psql 的 \\unrestrict 命令参数执行反引号扩展","url":"https://www.postgresql.org/support/security/CVE-2025-8714/","vector":"AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-14679","component":"core server","cvss_version":"3.0","description_en":"Stack buffer overflow in PostgreSQL argument name matching allows an object creator to achieve unknown impacts via OUT parameter count. The attack can write only 0x0 and 0x1 bytes. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-14679","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":8.2,"title":"修复多处错误地假定无需处理超过 FUNC_MAX_ARGS 个函数参数的问题","url":"https://www.postgresql.org/support/security/CVE-2026-14679/","vector":"AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-6464","component":"client","cvss_version":"3.0","description_en":"Untrusted data inclusion in PostgreSQL psql COPY may allow a server administrator to elicit execution of data lines as psql commands, via error injection. If the \"COPY FROM STDIN\" or \"\\copy FROM STDIN\" command fails before the server indicates that it awaits input rows, psql processes the in-line data rows as psql commands. \"COPY FROM\" with a filename is unaffected. The server administrator has no inherent control over the data rows, so a complete attack requires the attacker to separately acquire control of both the server and the data rows. Alternatively, an attacker controlling data rows alone might complete an attack through a coincidental error that they don't control. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-6464","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":8.1,"title":"修复 psql：跳过脚本中的 COPY ... FROM STDIN 命令后面的内联数据，即使 COPY 在发送 PGRES_COPY_IN 前失败","url":"https://www.postgresql.org/support/security/CVE-2026-6464/","vector":"AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-14668","component":"core server","cvss_version":"3.0","description_en":"Type confusion regarding input of PostgreSQL ctid data type selectivity estimator allows an object creator to view a calculation derived from the value of an arbitrary 4-byte span of memory, via a chosen non-ctid input. While the calculation loses precision, substantial memory value recovery appears possible. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-14668","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":8.1,"title":"让 scalarineqsel() 检查预期为 tid 类型的常量是否确实属于该类型","url":"https://www.postgresql.org/support/security/CVE-2026-14668/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-6471","component":"core server","cvss_version":"3.0","description_en":"Missing authorization in PostgreSQL logical decoding allows a non-superuser holding REPLICATION privilege to dlopen any file visible to the operating system account running the server, via the choice of logical decoding plugin. This in turn runs arbitrary code as that account. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-6471","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":7.2,"title":"将逻辑解码输出插件限制为新服务器参数 output_plugin_libraries 指定的集合","url":"https://www.postgresql.org/support/security/CVE-2026-6471/","vector":"AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-14663","component":"contrib module","cvss_version":"3.0","description_en":"Cleartext storage in PostgreSQL pgcrypto disabled ciphers allows a user to recover cleartext, via direct observation of the faulty ciphertext. The OpenSSL version and OpenSSL configuration determine the disabled ciphers. If the application accepts encrypted data as input, decryption will succeed even with the wrong key. This in turn loses the modest protection from the Modification Detection Code (MDC). Affected functions are pgp_sym_encrypt, pgp_sym_decrypt, pgp_pub_encrypt, pgp_pub_decrypt, pgp_sym_encrypt_bytea, pgp_sym_decrypt_bytea, pgp_pub_encrypt_bytea, and pgp_pub_decrypt_bytea. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-14663","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":6.5,"title":"修复 contrib/pgcrypto 的 PGP 加密，使其能够检测不受支持的密码算法","url":"https://www.postgresql.org/support/security/CVE-2026-14663/","vector":"AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"},{"affected":{"16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-14672","component":"core server","cvss_version":"3.0","description_en":"Observable response discrepancy in PostgreSQL SCRAM authentication allows an unauthenticated user to test the existence of a user via observing the SCRAM iteration count. This requires the probed user to have a non-default scram_iterations count, because the authentication challenge for a nonexistent user reports the default scram_iterations. Within major versions 16-18, minor versions before PostgreSQL 18.6, 17.11, and 16.15 are affected. Versions before PostgreSQL 16 are unaffected.","first_published":"2026-08-13","fixed":{"16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"","id":"CVE-2026-14672","introduced":{},"published":{"16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":5.3,"title":"让模拟的 SCRAM secret 更可信","url":"https://www.postgresql.org/support/security/CVE-2026-14672/","vector":"AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-6470","component":"core server","cvss_version":"3.0","description_en":"Missing authorization in PostgreSQL DDL commands allows an object creator to achieve denial of service against ALTER and DROP of the type, via creating a dependency on the type. Many DDL operations did check the privilege, but assigning a range subtype and referencing the type from an SQL expression did not. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-6470","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":4.3,"title":"在此前漏检的场景中检查数据类型的 USAGE 权限","url":"https://www.postgresql.org/support/security/CVE-2026-6470/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-18024","component":"core server","cvss_version":"3.0","description_en":"Buffer over-read in PostgreSQL ascii() SQL function allows a user to disclose up to 3 bytes after the end of a specific allocation, via a crafted text value. This is the same class of defect that CVE-2026-2006 fixed, though this instance has less impact. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-18024","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":4.3,"title":"增强 ascii() 函数对无效输入的防护","url":"https://www.postgresql.org/support/security/CVE-2026-18024/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-14678","component":"contrib module","cvss_version":"3.0","description_en":"Buffer over-read in PostgreSQL pg_trgm index picksplit function reads past end of a heap buffer. This might allow a table maintainer to infer limited memory values, via the lossy signal of index split choices. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-14678","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":4.3,"title":"修复 contrib/pg_trgm 的 GiST picksplit 函数中的数据类型错误","url":"https://www.postgresql.org/support/security/CVE-2026-14678/","vector":"AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N"},{"affected":{"17":"17","18":"18"},"affected_ranges":[{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-14681","component":"core server","cvss_version":"3.0","description_en":"Improper enforcement of message integrity in PostgreSQL GSSAPI support allows a user to negotiate GSSAPI contrary to pg_hba.conf rules, via initial direct TLS connection. Despite a pg_hba.conf that appears to require GSSAPI, the connection may exchange data over TLS encryption alone. If the TLS settings are more permissive than the GSS settings, the connection may continue with lesser protection. Within major versions 17-18, minor versions before PostgreSQL 18.6 and 17.11 are affected. Versions before PostgreSQL 17 are unaffected.","first_published":"2026-08-13","fixed":{"17":"17.11","18":"18.6"},"fixed_version":"","id":"CVE-2026-14681","introduced":{},"published":{"17":"2026-08-13","18":"2026-08-13"},"score":4.2,"title":"在直接 SSL 连接之后拒绝 GSSEncRequest","url":"https://www.postgresql.org/support/security/CVE-2026-14681/","vector":"AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-14666","component":"core server","cvss_version":"3.0","description_en":"Incomplete tracking in PostgreSQL of changes to role membership, role attributes, and database ownership allows a query to continue using cached row-level security policies after those changes require a different policy, via plan reuse. Stale policies continue until some other event invalidates the cache or connection termination ends the session. This permits a user to complete reads and modifications that were recently permitted but now forbidden. An attacker must tailor an attack to a particular application's pattern of privilege removal and role-specific row security policies. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-14666","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":4.2,"title":"角色发生变更后使依赖角色的缓存计划失效","url":"https://www.postgresql.org/support/security/CVE-2026-14666/","vector":"AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-6469","component":"core server","cvss_version":"3.0","description_en":"Incorrect ownership assignment in PostgreSQL ALTER TABLE ALTER TYPE command reassigns ownership of dependent statistics objects to the current user. This wrongly allows the table owner to run DROP STATISTICS and ALTER STATISTICS via this improper ownership. It wrongly denies those commands to the prior statistics object owner. DROP TABLE remains able to remove statistics objects, so this exploit achieves nothing in many ownership arrangements. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-6469","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":3.8,"title":"在 ALTER TABLE 重建扩展统计信息对象时保留其所有权","url":"https://www.postgresql.org/support/security/CVE-2026-6469/","vector":"AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:L/A:L"},{"affected":{"14":"14","15":"15","16":"16","17":"17","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"17","until":"17.11"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-16241","component":"client","cvss_version":"3.0","description_en":"Integer underflow in PostgreSQL ECPG allows a database server administrator to achieve temporary denial of service against the ECPG client via sending a bytea value lacking the mandatory prefix. The client overwrites a huge memory region with bytes outside attacker knowledge or control. This typically yields a simple SIGSEGV, but rare cases might achieve client-specific integrity impact via the write. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","17":"17.11","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-16241","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","17":"2026-08-13","18":"2026-08-13"},"score":3.8,"title":"修复 ecpg 应用程序因接收服务器返回的无效 bytea 数据而发生的越界写入","url":"https://www.postgresql.org/support/security/CVE-2026-16241/","vector":"AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:L/A:L"},{"affected":{"14":"14","15":"15","16":"16","18":"18"},"affected_ranges":[{"from":"0","until":"14.24"},{"from":"15","until":"15.19"},{"from":"16","until":"16.15"},{"from":"18","until":"18.6"}],"cna_url":"https://cveawg.mitre.org/api/cve/CVE-2026-14673","component":"contrib module","cvss_version":"3.0","description_en":"Untrusted search path in PostgreSQL amcheck allows a grantee of amcheck function EXECUTE privilege to execute arbitrary functions as the owners of expression indexes that depend on the search path, via setting a hostile search path before calling the amcheck function. Within major versions 18, 16, 15, and 14, minor versions before PostgreSQL 18.6, 16.15, 15.19, and 14.24 are affected. PostgreSQL 17 is unaffected.","first_published":"2026-08-13","fixed":{"14":"14.24","15":"15.19","16":"16.15","18":"18.6"},"fixed_version":"14.24","id":"CVE-2026-14673","introduced":{},"published":{"14":"2026-08-13","15":"2026-08-13","16":"2026-08-13","18":"2026-08-13"},"score":3.8,"title":"确保 contrib/amcheck 函数在执行索引表达式前限制 search_path","url":"https://www.postgresql.org/support/security/CVE-2026-14673/","vector":"AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:N"}],"duplicate_count":0,"excluded_count":0,"exclusions":[],"from_release":null,"groups":[{"age_days":58,"build":"14.24","changes_count":83,"compatibility_count":0,"content_hash":"3e0c3065a78d238ba87138a7c8651175d21159d1bb6afa8480f4c99937d16842","date":"2026-08-13","date_text":"2026-08-13","doc_git":"","doc_loaded_at":"2026-09-26T02:56:39.341991","entries":[{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["01992176e","20e9dcefd","226e49cbe","2a29b607d","4e1252ee5","4fcccea97","5d47df21e","7082ce248","82fd68801","99f205407","bf3842a64"],"commit_groups":[["01992176e","226e49cbe","2a29b607d","4e1252ee5","5d47df21e","99f205407","bf3842a64"],["20e9dcefd","4fcccea97","7082ce248","82fd68801"]],"commits":["bf3842a64"],"cves":["CVE-2026-6471"],"db_id":"bbf53e61656864929954589e1f777019","html":"\u003cp\u003e\n      将逻辑解码输出插件限制为新服务器参数\n      \u003ccode\u003eoutput_plugin_libraries\u003c/code\u003e 指定的集合（Jacob Champion）\u003ca href=\"https://postgr.es/c/bf3842a64\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      此前，复制用户可以为逻辑解码选择任意可加载库，从而实施各种攻击。为了在不破坏原有可用配置的情况下收紧这一限制，现引入一份允许使用的输出插件列表。\n     \u003c/p\u003e\u003cp\u003e\n      默认情况下，只有随 \u003cspan\u003ePostgreSQL\u003c/span\u003e 提供的输出插件（\u003ccode\u003epgoutput\u003c/code\u003e 和 \u003ccode\u003etest_decoding\u003c/code\u003e）会包含在\n      \u003ccode\u003eoutput_plugin_libraries\u003c/code\u003e 中。使用其他输出插件的安装必须在更新服务器后将其加入该参数，例如：\n\u003c/p\u003e\u003cpre\u003eoutput_plugin_libraries = 'pgoutput, test_decoding, my_trusted_decoder'\n\u003c/pre\u003e\u003cp\u003e\n\u003c/p\u003e\u003cp\u003e\n      此外，从版本 17 或更高版本迁移时，如果\n      \u003ccode\u003epg_upgrade --check\u003c/code\u003e 发现新集簇的\n      \u003ccode\u003eoutput_plugin_libraries\u003c/code\u003e 参数不允许旧集簇逻辑复制槽所使用的插件，检查将会失败。请在执行 \u003cspan\u003epg_upgrade\u003c/span\u003e 前对新集簇的设置作必要补充。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Vladimir Tokarev 和 Yu Kunpeng 报告此问题。（CVE-2026-6471）\n     \u003c/p\u003e","id":"14.24-ee721afe6731e1ce","identity_text":"Restrict logical decoding output plugins to the set specified by a new server parameter output_plugin_libraries (Jacob Champion) Previously, a replication user could select any loadable library for logical decoding, allowing exploits of various sorts. To allow locking this down without breaking setups that worked before, introduce a whitelist of allowed output plugins. By default, only the output plugins shipped as part of PostgreSQL (pgoutput and test_decoding) are included in output_plugin_libraries. Installations that rely on other output plugins must add them after updating the server, for example output_plugin_libraries = 'pgoutput, test_decoding, my_trusted_decoder' Additionally, pg_upgrade --check will fail if the output_plugin_libraries parameter on the new cluster does not permit the plugins of logical replication slots on the old cluster, when migrating from versions 17 and later. Make necessary additions to the new cluster's setting before performing pg_upgrade. The PostgreSQL Project thanks Vladimir Tokarev and Yu Kunpeng for reporting this problem. (CVE-2026-6471)","part":"changes","patch_ids":["29a8e1db1536ed40c71312e7d2015c9e","bcbaedd0455bfc84b87ba56b7f4aba2c"],"related_changes":[{"db_id":"2ed41f6adf451dd977da156f72190023","evidence":{"patch_ids":["29a8e1db1536ed40c71312e7d2015c9e","bcbaedd0455bfc84b87ba56b7f4aba2c"],"same_day":true,"statement_hash":"66cffd63e622afc809ffcea154c77acb7025871176da7689b08b6db15ff40212"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"将逻辑解码输出插件限制为新服务器参数 output_plugin_libraries 指定的集合","url":"/docs/compare/?release=18.6#18.6-76e8d95ade6e17d6","version":"18.6"},{"db_id":"549fb97375289bbc21d70209d1e5e9a8","evidence":{"patch_ids":["29a8e1db1536ed40c71312e7d2015c9e","bcbaedd0455bfc84b87ba56b7f4aba2c"],"same_day":true,"statement_hash":"66cffd63e622afc809ffcea154c77acb7025871176da7689b08b6db15ff40212"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"将逻辑解码输出插件限制为新服务器参数 output_plugin_libraries 指定的集合","url":"/docs/compare/?release=17.11#17.11-ccab0c809e14d029","version":"17.11"},{"db_id":"b5e7e2e2c6e0c744c28da7990822970a","evidence":{"patch_ids":["29a8e1db1536ed40c71312e7d2015c9e","bcbaedd0455bfc84b87ba56b7f4aba2c"],"same_day":true,"statement_hash":"66cffd63e622afc809ffcea154c77acb7025871176da7689b08b6db15ff40212"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"将逻辑解码输出插件限制为新服务器参数 output_plugin_libraries 指定的集合","url":"/docs/compare/?release=16.15#16.15-d023ef134eea5c3e","version":"16.15"},{"db_id":"7007806ed1d8192364b7ef102e45e7ef","evidence":{"patch_ids":["29a8e1db1536ed40c71312e7d2015c9e","bcbaedd0455bfc84b87ba56b7f4aba2c"],"same_day":true,"statement_hash":"66cffd63e622afc809ffcea154c77acb7025871176da7689b08b6db15ff40212"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"将逻辑解码输出插件限制为新服务器参数 output_plugin_libraries 指定的集合","url":"/docs/compare/?release=15.19#15.19-b1dbeb58e5a6c437","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["29a8e1db1536ed40c71312e7d2015c9e","bcbaedd0455bfc84b87ba56b7f4aba2c"],"same_day":true,"statement_hash":"66cffd63e622afc809ffcea154c77acb7025871176da7689b08b6db15ff40212"},"rule":2,"target":"2ed41f6adf451dd977da156f72190023","type":"equivalent"},{"evidence":{"patch_ids":["29a8e1db1536ed40c71312e7d2015c9e","bcbaedd0455bfc84b87ba56b7f4aba2c"],"same_day":true,"statement_hash":"66cffd63e622afc809ffcea154c77acb7025871176da7689b08b6db15ff40212"},"rule":2,"target":"549fb97375289bbc21d70209d1e5e9a8","type":"equivalent"},{"evidence":{"patch_ids":["29a8e1db1536ed40c71312e7d2015c9e","bcbaedd0455bfc84b87ba56b7f4aba2c"],"same_day":true,"statement_hash":"66cffd63e622afc809ffcea154c77acb7025871176da7689b08b6db15ff40212"},"rule":2,"target":"7007806ed1d8192364b7ef102e45e7ef","type":"equivalent"},{"evidence":{"patch_ids":["29a8e1db1536ed40c71312e7d2015c9e","bcbaedd0455bfc84b87ba56b7f4aba2c"],"same_day":true,"statement_hash":"66cffd63e622afc809ffcea154c77acb7025871176da7689b08b6db15ff40212"},"rule":2,"target":"b5e7e2e2c6e0c744c28da7990822970a","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["20e9dcefd","bf3842a64"],"source_entry_id":"14.24/changes/001","source_hash":"f00ce6d606f4ea0c8758e0211561f4127ff43ea4bf0083bb036decf442193855","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"66cffd63e622afc809ffcea154c77acb7025871176da7689b08b6db15ff40212","text":"将逻辑解码输出插件限制为新服务器参数 output_plugin_libraries 指定的集合（Jacob Champion）§ 此前，复制用户可以为逻辑解码选择任意可加载库，从而实施各种攻击。为了在不破坏原有可用配置的情况下收紧这一限制，现引入一份允许使用的输出插件列表。 默认情况下，只有随 PostgreSQL 提供的输出插件（pgoutput 和 test_decoding）会包含在 output_plugin_libraries 中。使用其他输出插件的安装必须在更新服务器后将其加入该参数，例如： output_plugin_libraries = 'pgoutput, test_decoding, my_trusted_decoder' 此外，从版本 17 或更高版本迁移时，如果 pg_upgrade --check 发现新集簇的 output_plugin_libraries 参数不允许旧集簇逻辑复制槽所使用的插件，检查将会失败。请在执行 pg_upgrade 前对新集簇的设置作必要补充。 PostgreSQL 项目感谢 Vladimir Tokarev 和 Yu Kunpeng 报告此问题。（CVE-2026-6471）","title":"将逻辑解码输出插件限制为新服务器参数 output_plugin_libraries 指定的集合","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["472ef7e4a","49e795414","4c5128ca0","6ca6023ca","7e29eb6f4","7eed42aa8","953be116c","b05cfc693","ba207f58f","ba2a63faf","d0ecee6de","d97b3f58c","e2c48c81f","fe32b10fc"],"commit_groups":[["472ef7e4a","6ca6023ca","7e29eb6f4","b05cfc693","ba207f58f","d0ecee6de","fe32b10fc"],["49e795414","4c5128ca0","7eed42aa8","953be116c","ba2a63faf","d97b3f58c","e2c48c81f"]],"commits":["7e29eb6f4","e2c48c81f"],"cves":["CVE-2026-14663"],"db_id":"a686eb51b6b69a27a6ba670a1473120d","html":"\u003cp\u003e\n      修复 \u003ccode\u003econtrib/pgcrypto\u003c/code\u003e 的 PGP 加密，使其能够检测不受支持的密码算法（Daniel Gustafsson）\u003ca href=\"https://postgr.es/c/7e29eb6f4\"\u003e§\u003c/a\u003e\n\u003ca href=\"https://postgr.es/c/e2c48c81f\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      此前，如果 OpenSSL 拒绝所请求的密码算法（例如，因为它正以 FIPS 模式运行，或尚未加载 legacy provider），\u003cspan\u003epgcrypto\u003c/span\u003e\n      无法发现这一失败，只会将未经加密的块与明文进行异或，使这种\u003cspan\u003e“\u003cspan\u003e加密\u003c/span\u003e”\u003c/span\u003e轻易即可破解。这通常发生在已弃用或不符合 FIPS 的密码算法上（cipher-algo=blowfish/bf、twofish、cast5 或 3des）。\n     \u003c/p\u003e\u003cp\u003e\n      默认情况下，\u003cspan\u003epgcrypto\u003c/span\u003e 现在将无法解密以这种方式受影响的任何消息。为了能够取回这类数据，现新增选项\n      \u003ccode\u003eignore-cipher-failure\u003c/code\u003e，用于\n      \u003ccode\u003epgp_pub_decrypt()\u003c/code\u003e 和\n      \u003ccode\u003epgp_sym_decrypt()\u003c/code\u003e。设置 \u003ccode\u003eignore-cipher-failure=1\u003c/code\u003e 将恢复此前的行为，从而可以移除有缺陷的加密封装：\n\u003c/p\u003e\u003cpre\u003epgp_sym_decrypt(encrypted_column, \u003cem\u003e\u003ccode\u003eany key\u003c/code\u003e\u003c/em\u003e, 'ignore-cipher-failure=1')\n\u003c/pre\u003e\u003cp\u003e\n      识别出受影响的消息并移除其封装后，即可使用现代算法重新加密。不过，OpenSSL 的行为必须与创建这些有缺陷消息时相同：如果不受支持的算法集合并不相同，这种方法将无法奏效。请参阅\n      \u003ccode\u003eignore-cipher-failure\u003c/code\u003e 的文档。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Shishir Sharma 报告此问题。（CVE-2026-14663）\n     \u003c/p\u003e","id":"14.24-fdda567fdb9d909d","identity_text":"Fix contrib/pgcrypto's PGP encryption to detect unsupported ciphers (Daniel Gustafsson) Previously, if OpenSSL rejected the requested cipher (for example, because it is running in FIPS mode, or the legacy provider hasn't been loaded), pgcrypto failed to notice the failure and simply XOR'd the non-encrypted block with the plaintext, rendering the encryption trivially breakable. This will typically occur with deprecated or non-FIPS cipher algorithms (cipher-algo=blowfish/bf, twofish, cast5, or 3des). By default, pgcrypto will now fail to decrypt any messages that were affected in this way. To allow retrieval of such data, a new option ignore-cipher-failure has been added to pgp_pub_decrypt() and pgp_sym_decrypt(). Setting ignore-cipher-failure=1 will restore their previous behavior, allowing the faulty encryption wrapper to be stripped off: pgp_sym_decrypt(encrypted_column, any key, 'ignore-cipher-failure=1') Once the affected messages are identified and stripped of their wrappers, they can then be re-encrypted with a modern algorithm. It is important however that the behavior of OpenSSL be the same as it was when the faulty messages were created: if the set of unsupported algorithms is not the same, this approach will not work. See the documentation for ignore-cipher-failure. The PostgreSQL Project thanks Shishir Sharma for reporting this problem. (CVE-2026-14663)","part":"changes","patch_ids":["0c0f3075fa6d42cb4f237a14111f3f86","94579ce6ea64094f97312d8046fcb082"],"related_changes":[{"db_id":"e8d5337224696bc194016b8a5269940d","evidence":{"patch_ids":["0c0f3075fa6d42cb4f237a14111f3f86","94579ce6ea64094f97312d8046fcb082"],"same_day":true,"statement_hash":"f9b50dfe772a85830e7ce5570ba2e751618ceca0e1ebf0653490632965de190f"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 contrib/pgcrypto 的 PGP 加密，使其能够检测不受支持的密码算法","url":"/docs/compare/?release=18.6#18.6-bfaa3421904d3a41","version":"18.6"},{"db_id":"379745809d65e827e6739e3818394675","evidence":{"patch_ids":["0c0f3075fa6d42cb4f237a14111f3f86","94579ce6ea64094f97312d8046fcb082"],"same_day":true,"statement_hash":"f9b50dfe772a85830e7ce5570ba2e751618ceca0e1ebf0653490632965de190f"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 contrib/pgcrypto 的 PGP 加密，使其能够检测不受支持的密码算法","url":"/docs/compare/?release=17.11#17.11-165fa935d28df7f1","version":"17.11"},{"db_id":"5487cefec946cc3b492ec90f8407bbc0","evidence":{"patch_ids":["0c0f3075fa6d42cb4f237a14111f3f86","94579ce6ea64094f97312d8046fcb082"],"same_day":true,"statement_hash":"f9b50dfe772a85830e7ce5570ba2e751618ceca0e1ebf0653490632965de190f"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 contrib/pgcrypto 的 PGP 加密，使其能够检测不受支持的密码算法","url":"/docs/compare/?release=16.15#16.15-8ceb116fc33c62af","version":"16.15"},{"db_id":"28125c4ed11f62e12267d5aa58f29ab4","evidence":{"patch_ids":["0c0f3075fa6d42cb4f237a14111f3f86","94579ce6ea64094f97312d8046fcb082"],"same_day":true,"statement_hash":"f9b50dfe772a85830e7ce5570ba2e751618ceca0e1ebf0653490632965de190f"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 contrib/pgcrypto 的 PGP 加密，使其能够检测不受支持的密码算法","url":"/docs/compare/?release=15.19#15.19-09644d5ff1559695","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["0c0f3075fa6d42cb4f237a14111f3f86","94579ce6ea64094f97312d8046fcb082"],"same_day":true,"statement_hash":"f9b50dfe772a85830e7ce5570ba2e751618ceca0e1ebf0653490632965de190f"},"rule":2,"target":"28125c4ed11f62e12267d5aa58f29ab4","type":"equivalent"},{"evidence":{"patch_ids":["0c0f3075fa6d42cb4f237a14111f3f86","94579ce6ea64094f97312d8046fcb082"],"same_day":true,"statement_hash":"f9b50dfe772a85830e7ce5570ba2e751618ceca0e1ebf0653490632965de190f"},"rule":2,"target":"379745809d65e827e6739e3818394675","type":"equivalent"},{"evidence":{"patch_ids":["0c0f3075fa6d42cb4f237a14111f3f86","94579ce6ea64094f97312d8046fcb082"],"same_day":true,"statement_hash":"f9b50dfe772a85830e7ce5570ba2e751618ceca0e1ebf0653490632965de190f"},"rule":2,"target":"5487cefec946cc3b492ec90f8407bbc0","type":"equivalent"},{"evidence":{"patch_ids":["0c0f3075fa6d42cb4f237a14111f3f86","94579ce6ea64094f97312d8046fcb082"],"same_day":true,"statement_hash":"f9b50dfe772a85830e7ce5570ba2e751618ceca0e1ebf0653490632965de190f"},"rule":2,"target":"e8d5337224696bc194016b8a5269940d","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["7e29eb6f4","e2c48c81f"],"source_entry_id":"14.24/changes/002","source_hash":"cd1780e1c0bde154310c533d540fb170a857e015425b5d28c38f88e7c3eeee12","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"f9b50dfe772a85830e7ce5570ba2e751618ceca0e1ebf0653490632965de190f","text":"修复 contrib/pgcrypto 的 PGP 加密，使其能够检测不受支持的密码算法（Daniel Gustafsson）§ § 此前，如果 OpenSSL 拒绝所请求的密码算法（例如，因为它正以 FIPS 模式运行，或尚未加载 legacy provider），pgcrypto 无法发现这一失败，只会将未经加密的块与明文进行异或，使这种“加密”轻易即可破解。这通常发生在已弃用或不符合 FIPS 的密码算法上（cipher-algo=blowfish/bf、twofish、cast5 或 3des）。 默认情况下，pgcrypto 现在将无法解密以这种方式受影响的任何消息。为了能够取回这类数据，现新增选项 ignore-cipher-failure，用于 pgp_pub_decrypt() 和 pgp_sym_decrypt()。设置 ignore-cipher-failure=1 将恢复此前的行为，从而可以移除有缺陷的加密封装： pgp_sym_decrypt(encrypted_column, any key, 'ignore-cipher-failure=1') 识别出受影响的消息并移除其封装后，即可使用现代算法重新加密。不过，OpenSSL 的行为必须与创建这些有缺陷消息时相同：如果不受支持的算法集合并不相同，这种方法将无法奏效。请参阅 ignore-cipher-failure 的文档。 PostgreSQL 项目感谢 Shishir Sharma 报告此问题。（CVE-2026-14663）","title":"修复 contrib/pgcrypto 的 PGP 加密，使其能够检测不受支持的密码算法","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["29921259e","2bdfd5cdc","3045a25ba","3fdcfa8f7","46fa1f6f3","5c51ae455","7215c7e96","8cdbabea7","8cf01e213","900894d35","cf754f741","d6ab88d37","db96e87f9","dca6627de"],"commit_groups":[["29921259e","2bdfd5cdc","3045a25ba","3fdcfa8f7","46fa1f6f3","5c51ae455","d6ab88d37"],["7215c7e96","8cdbabea7","8cf01e213","900894d35","cf754f741","db96e87f9","dca6627de"]],"commits":["5c51ae455","7215c7e96"],"cves":["CVE-2026-6464"],"db_id":"a4c84c6885a3a330efb43a5e79c7eeca","html":"\u003cp\u003e\n      修复 \u003cspan\u003epsql\u003c/span\u003e：跳过脚本中的\n      \u003ccode\u003eCOPY ... FROM STDIN\u003c/code\u003e 命令后面的内联数据，即使\n      \u003ccode\u003eCOPY\u003c/code\u003e 在发送 \u003ccode\u003ePGRES_COPY_IN\u003c/code\u003e 前失败（Tom Lane）\u003ca href=\"https://postgr.es/c/5c51ae455\"\u003e§\u003c/a\u003e\n\u003ca href=\"https://postgr.es/c/7215c7e96\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      此前，如果 \u003ccode\u003eCOPY\u003c/code\u003e 命令在开始执行时失败（例如目标表不存在），\u003cspan\u003epsql\u003c/span\u003e 无法意识到这一点，会继续把随后的内联数据当作 SQL 命令读取。即使在最好的情况下这也是错误的，在最坏的情况下则会构成 SQL 注入风险。现在，\u003cspan\u003epsql\u003c/span\u003e 会识别语法有效的\n      \u003ccode\u003eCOPY ... FROM STDIN\u003c/code\u003e 命令，并在服务器没有返回\n      \u003ccode\u003ePGRES_COPY_IN\u003c/code\u003e 时自行跳过数据。\n     \u003c/p\u003e\u003cp\u003e\n      此修复不太可能影响生产 SQL 脚本，但测试脚本可能会有意测试失败的\n      \u003ccode\u003eCOPY\n      ... FROM STDIN\u003c/code\u003e 命令。此类脚本需要在每条这样的命令后增加一行 \u003ccode\u003e\\.\u003c/code\u003e 数据终止符。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Alexander Lakhin 报告此问题。（CVE-2026-6464）\n     \u003c/p\u003e","id":"14.24-6d095df52bb23c05","identity_text":"Fix psql to skip in-line data following a scripted COPY ... FROM STDIN command, even if the COPY fails before sending PGRES_COPY_IN (Tom Lane) Previously, if a COPY command failed at startup (for instance, because the target table doesn't exist) psql would not realize that and would proceed to read the following in-line data as SQL commands. In the best case that's wrong and in the worst case it's a SQL-injection hazard. Teach psql to recognize syntactically-valid COPY ... FROM STDIN commands and to skip data on its own authority if the server doesn't respond with PGRES_COPY_IN. While this fix is unlikely to affect any production SQL scripts, test scripts might intentionally exercise failing COPY ... FROM STDIN commands. Those will need to gain a \\. data terminator line after each such command. The PostgreSQL Project thanks Alexander Lakhin for reporting this problem. (CVE-2026-6464)","part":"changes","patch_ids":["bb5ab12243a3045680f47ff1cb2c8480","ecf5b4358ac3d55d48e5c5a6cf618bc5"],"related_changes":[{"db_id":"3c7601286aa0c9239f3cd6933eeddc1f","evidence":{"patch_ids":["bb5ab12243a3045680f47ff1cb2c8480","ecf5b4358ac3d55d48e5c5a6cf618bc5"],"same_day":true,"statement_hash":"76e8147c7ad5a98f52d6ef02172b79adbee8009366c00ae89f0a205215b4b225"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 psql：跳过脚本中的 COPY ... FROM STDIN 命令后面的内联数据，即使 COPY 在发送 PGRES_COPY_IN 前失败","url":"/docs/compare/?release=18.6#18.6-7711e8f6ad16c5dd","version":"18.6"},{"db_id":"df55d2444f4fc088a4a59341aed77733","evidence":{"patch_ids":["bb5ab12243a3045680f47ff1cb2c8480","ecf5b4358ac3d55d48e5c5a6cf618bc5"],"same_day":true,"statement_hash":"76e8147c7ad5a98f52d6ef02172b79adbee8009366c00ae89f0a205215b4b225"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 psql：跳过脚本中的 COPY ... FROM STDIN 命令后面的内联数据，即使 COPY 在发送 PGRES_COPY_IN 前失败","url":"/docs/compare/?release=17.11#17.11-8dd81897faaffe37","version":"17.11"},{"db_id":"3fc8822e02c16e254582e2877b732705","evidence":{"patch_ids":["bb5ab12243a3045680f47ff1cb2c8480","ecf5b4358ac3d55d48e5c5a6cf618bc5"],"same_day":true,"statement_hash":"76e8147c7ad5a98f52d6ef02172b79adbee8009366c00ae89f0a205215b4b225"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 psql：跳过脚本中的 COPY ... FROM STDIN 命令后面的内联数据，即使 COPY 在发送 PGRES_COPY_IN 前失败","url":"/docs/compare/?release=16.15#16.15-2edf36c62c37ac67","version":"16.15"},{"db_id":"ea96c547a98f3910bcd150ec7a9bb871","evidence":{"patch_ids":["bb5ab12243a3045680f47ff1cb2c8480","ecf5b4358ac3d55d48e5c5a6cf618bc5"],"same_day":true,"statement_hash":"76e8147c7ad5a98f52d6ef02172b79adbee8009366c00ae89f0a205215b4b225"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 psql：跳过脚本中的 COPY ... FROM STDIN 命令后面的内联数据，即使 COPY 在发送 PGRES_COPY_IN 前失败","url":"/docs/compare/?release=15.19#15.19-69623f56c9e9722f","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["bb5ab12243a3045680f47ff1cb2c8480","ecf5b4358ac3d55d48e5c5a6cf618bc5"],"same_day":true,"statement_hash":"76e8147c7ad5a98f52d6ef02172b79adbee8009366c00ae89f0a205215b4b225"},"rule":2,"target":"3c7601286aa0c9239f3cd6933eeddc1f","type":"equivalent"},{"evidence":{"patch_ids":["bb5ab12243a3045680f47ff1cb2c8480","ecf5b4358ac3d55d48e5c5a6cf618bc5"],"same_day":true,"statement_hash":"76e8147c7ad5a98f52d6ef02172b79adbee8009366c00ae89f0a205215b4b225"},"rule":2,"target":"3fc8822e02c16e254582e2877b732705","type":"equivalent"},{"evidence":{"patch_ids":["bb5ab12243a3045680f47ff1cb2c8480","ecf5b4358ac3d55d48e5c5a6cf618bc5"],"same_day":true,"statement_hash":"76e8147c7ad5a98f52d6ef02172b79adbee8009366c00ae89f0a205215b4b225"},"rule":2,"target":"df55d2444f4fc088a4a59341aed77733","type":"equivalent"},{"evidence":{"patch_ids":["bb5ab12243a3045680f47ff1cb2c8480","ecf5b4358ac3d55d48e5c5a6cf618bc5"],"same_day":true,"statement_hash":"76e8147c7ad5a98f52d6ef02172b79adbee8009366c00ae89f0a205215b4b225"},"rule":2,"target":"ea96c547a98f3910bcd150ec7a9bb871","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["5c51ae455","7215c7e96"],"source_entry_id":"14.24/changes/003","source_hash":"a1457dd6114324849cb46311ab985bff213bd77d70478740323452c9cddbfdd9","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"76e8147c7ad5a98f52d6ef02172b79adbee8009366c00ae89f0a205215b4b225","text":"修复 psql：跳过脚本中的 COPY ... FROM STDIN 命令后面的内联数据，即使 COPY 在发送 PGRES_COPY_IN 前失败（Tom Lane）§ § 此前，如果 COPY 命令在开始执行时失败（例如目标表不存在），psql 无法意识到这一点，会继续把随后的内联数据当作 SQL 命令读取。即使在最好的情况下这也是错误的，在最坏的情况下则会构成 SQL 注入风险。现在，psql 会识别语法有效的 COPY ... FROM STDIN 命令，并在服务器没有返回 PGRES_COPY_IN 时自行跳过数据。 此修复不太可能影响生产 SQL 脚本，但测试脚本可能会有意测试失败的 COPY ... FROM STDIN 命令。此类脚本需要在每条这样的命令后增加一行 \\. 数据终止符。 PostgreSQL 项目感谢 Alexander Lakhin 报告此问题。（CVE-2026-6464）","title":"修复 psql：跳过脚本中的 COPY ... FROM STDIN 命令后面的内联数据，即使 COPY 在发送 PGRES_COPY_IN 前失败","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["1f49beef2","37b8f3b0e","60887d348","64a65ead1","7d150b5c9","9e02e2e18","fc933ce00"],"commit_groups":[["1f49beef2","37b8f3b0e","60887d348","64a65ead1","7d150b5c9","9e02e2e18","fc933ce00"]],"commits":["1f49beef2"],"cves":["CVE-2026-16239"],"db_id":"e9fc65bf1c23945887e9b1904d08b935","html":"\u003cp\u003e\n      交叉检查运行 \u003ccode\u003eEXECUTE\u003c/code\u003e 或 \u003ccode\u003eFETCH\u003c/code\u003e\n      的 portal 的输出行类型（Robert Haas）\u003ca href=\"https://postgr.es/c/1f49beef2\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n\u003ccode\u003eEXECUTE\u003c/code\u003e 和 \u003ccode\u003eFETCH\u003c/code\u003e 使用两个 portal：外层 portal 用于语句本身，内层 portal 则代其运行实际查询。此前可以使两个 portal 声明的行类型不一致，从而导致服务器内存泄露和任意代码执行。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Ben Morris（与 Claude 和 Anthropic Research 协作）和 Peter Geoghegan\n      报告此问题。（CVE-2026-16239）\n     \u003c/p\u003e","id":"14.24-741f9481441d702d","identity_text":"Cross-check the output row type of a portal running EXECUTE or FETCH (Robert Haas) EXECUTE and FETCH use two portals: an outer one for the statement itself, and an inner one running the query being executed on its behalf. It was previously possible to make the declared row types of the two portals diverge, leading to server memory disclosure and arbitrary code execution. The PostgreSQL Project thanks Ben Morris (in collaboration with Claude and Anthropic Research) and Peter Geoghegan for reporting this problem. (CVE-2026-16239)","part":"changes","patch_ids":["bca9a8aea055bf40b974631f891c3459"],"related_changes":[{"db_id":"5b8818230400246029db8b181a69938c","evidence":{"patch_ids":["bca9a8aea055bf40b974631f891c3459"],"same_day":true,"statement_hash":"6bfdff724b157ff6ff7a59fd5879e05c524cc0a5a96ac58a33fa9750cc2db073"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"交叉检查运行 EXECUTE 或 FETCH 的 portal 的输出行类型","url":"/docs/compare/?release=18.6#18.6-cdf902a8952d780f","version":"18.6"},{"db_id":"3ec84f87545930ce1036d071dad3e665","evidence":{"patch_ids":["bca9a8aea055bf40b974631f891c3459"],"same_day":true,"statement_hash":"6bfdff724b157ff6ff7a59fd5879e05c524cc0a5a96ac58a33fa9750cc2db073"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"交叉检查运行 EXECUTE 或 FETCH 的 portal 的输出行类型","url":"/docs/compare/?release=17.11#17.11-b9a0ccf8cc602cca","version":"17.11"},{"db_id":"35f9a631aba647241e1c1fe3a3c4c269","evidence":{"patch_ids":["bca9a8aea055bf40b974631f891c3459"],"same_day":true,"statement_hash":"6bfdff724b157ff6ff7a59fd5879e05c524cc0a5a96ac58a33fa9750cc2db073"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"交叉检查运行 EXECUTE 或 FETCH 的 portal 的输出行类型","url":"/docs/compare/?release=16.15#16.15-82e9952b24a8b230","version":"16.15"},{"db_id":"e2286cb0c701bb465fa540c1d4a45071","evidence":{"patch_ids":["bca9a8aea055bf40b974631f891c3459"],"same_day":true,"statement_hash":"6bfdff724b157ff6ff7a59fd5879e05c524cc0a5a96ac58a33fa9750cc2db073"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"交叉检查运行 EXECUTE 或 FETCH 的 portal 的输出行类型","url":"/docs/compare/?release=15.19#15.19-1912ca9b594fe54f","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["bca9a8aea055bf40b974631f891c3459"],"same_day":true,"statement_hash":"6bfdff724b157ff6ff7a59fd5879e05c524cc0a5a96ac58a33fa9750cc2db073"},"rule":2,"target":"35f9a631aba647241e1c1fe3a3c4c269","type":"equivalent"},{"evidence":{"patch_ids":["bca9a8aea055bf40b974631f891c3459"],"same_day":true,"statement_hash":"6bfdff724b157ff6ff7a59fd5879e05c524cc0a5a96ac58a33fa9750cc2db073"},"rule":2,"target":"3ec84f87545930ce1036d071dad3e665","type":"equivalent"},{"evidence":{"patch_ids":["bca9a8aea055bf40b974631f891c3459"],"same_day":true,"statement_hash":"6bfdff724b157ff6ff7a59fd5879e05c524cc0a5a96ac58a33fa9750cc2db073"},"rule":2,"target":"5b8818230400246029db8b181a69938c","type":"equivalent"},{"evidence":{"patch_ids":["bca9a8aea055bf40b974631f891c3459"],"same_day":true,"statement_hash":"6bfdff724b157ff6ff7a59fd5879e05c524cc0a5a96ac58a33fa9750cc2db073"},"rule":2,"target":"e2286cb0c701bb465fa540c1d4a45071","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["1f49beef2"],"source_entry_id":"14.24/changes/004","source_hash":"4b0cf1599af294079cf3e801cbbf3329556d65bd8e6f2ff7a5a069cdeb055af2","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"6bfdff724b157ff6ff7a59fd5879e05c524cc0a5a96ac58a33fa9750cc2db073","text":"交叉检查运行 EXECUTE 或 FETCH 的 portal 的输出行类型（Robert Haas）§ EXECUTE 和 FETCH 使用两个 portal：外层 portal 用于语句本身，内层 portal 则代其运行实际查询。此前可以使两个 portal 声明的行类型不一致，从而导致服务器内存泄露和任意代码执行。 PostgreSQL 项目感谢 Ben Morris（与 Claude 和 Anthropic Research 协作）和 Peter Geoghegan 报告此问题。（CVE-2026-16239）","title":"交叉检查运行 EXECUTE 或 FETCH 的 portal 的输出行类型","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["12a620686","2cf28d1b9","3294ab839","331016322","3d724bf4f","4fafe2380","5dbeb69bc","5fb3c6389","8f64cc83f","b614de487","bef46aed3"],"commit_groups":[["12a620686","3294ab839","3d724bf4f","4fafe2380"],["2cf28d1b9","331016322","5dbeb69bc","5fb3c6389","8f64cc83f","b614de487","bef46aed3"]],"commits":["5fb3c6389"],"cves":["CVE-2026-14669"],"db_id":"027ccc17f71deb2b38e14fc8cc82dccd","html":"\u003cp\u003e\n      修复 \u003ccode\u003eto_char()\u003c/code\u003e 处理过长时区缩写时发生的缓冲区越界写入（Tom Lane）\u003ca href=\"https://postgr.es/c/5fb3c6389\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      这很容易导致服务器崩溃，并且已有报告表明可利用该问题执行任意代码。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Hcamael、Amjad Shahzad、AntAISecurityLab 的 Tan Zhen、Tomer Fichman、Zheng Yu、Amy Burnett（OpenAI Codex Security）、Rick de Jager、Heewon\n      Song、Sylvie Mayer、Aleksander Alekseev 和 Hillai Ben Sasson\n      报告此问题。（CVE-2026-14669）\n     \u003c/p\u003e","id":"14.24-744489dc4872d6f1-1","identity_text":"Fix buffer overrun with long time zone abbreviation in to_char() (Tom Lane) This can easily crash the server, and exploits leading to arbitrary code execution have been reported. The PostgreSQL Project thanks Hcamael, Amjad Shahzad, Tan Zhen of AntAISecurityLab, Tomer Fichman, Zheng Yu, Amy Burnett (OpenAI Codex Security), Rick de Jager, Heewon Song, Sylvie Mayer, Aleksander Alekseev, and Hillai Ben Sasson for reporting this problem. (CVE-2026-14669)","part":"changes","patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9","f6e281e04c97bcdc5fa29a25f60517ca"],"related_changes":[{"db_id":"1ba572e4a9f5584ecce320e293d4b258","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"kind":"related","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复回退到归档后级联备库无法重新连接的问题","url":"/docs/compare/?release=18.6#18.6-e75bd84b8c02b997","version":"18.6"},{"db_id":"1b34d3e2b18d75096fd2914d3673446c","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9","f6e281e04c97bcdc5fa29a25f60517ca"],"same_day":true,"statement_hash":"07a38d896c94ef2711ebb1c7c66bf1537f00d81b7488271a922229ab5b8f1962"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 to_char() 处理过长时区缩写时发生的缓冲区越界写入","url":"/docs/compare/?release=18.6#18.6-251aba36d837c523","version":"18.6"},{"db_id":"bf82a2510c4dfe4309435e9bce0ab3a4","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9","f6e281e04c97bcdc5fa29a25f60517ca"],"same_day":true,"statement_hash":"07a38d896c94ef2711ebb1c7c66bf1537f00d81b7488271a922229ab5b8f1962"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 to_char() 处理过长时区缩写时发生的缓冲区越界写入","url":"/docs/compare/?release=17.11#17.11-9aaf551ddc6d8e1b","version":"17.11"},{"db_id":"b17ef22f538327cabf0726e1b3f902cc","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"kind":"related","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复回退到归档后级联备库无法重新连接的问题","url":"/docs/compare/?release=17.11#17.11-8291f394c20dacdc","version":"17.11"},{"db_id":"bfa74492dd2c8ed5f4b0a4321cb63c85","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"kind":"related","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复回退到归档后级联备库无法重新连接的问题","url":"/docs/compare/?release=16.15#16.15-f0ba58d9c922a403-2","version":"16.15"},{"db_id":"70897dba323af27792543b2311799668","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9","f6e281e04c97bcdc5fa29a25f60517ca"],"same_day":true,"statement_hash":"07a38d896c94ef2711ebb1c7c66bf1537f00d81b7488271a922229ab5b8f1962"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 to_char() 处理过长时区缩写时发生的缓冲区越界写入","url":"/docs/compare/?release=16.15#16.15-f0ba58d9c922a403-1","version":"16.15"},{"db_id":"bfa88fa3d381bbc9b7ee7a8614ea363c","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9","f6e281e04c97bcdc5fa29a25f60517ca"],"same_day":true,"statement_hash":"07a38d896c94ef2711ebb1c7c66bf1537f00d81b7488271a922229ab5b8f1962"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 to_char() 处理过长时区缩写时发生的缓冲区越界写入","url":"/docs/compare/?release=15.19#15.19-4395db3387c7cd38-1","version":"15.19"},{"db_id":"771fa954f9b22168a0764dc12074dadb","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"kind":"related","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复回退到归档后级联备库无法重新连接的问题","url":"/docs/compare/?release=15.19#15.19-4395db3387c7cd38-2","version":"15.19"},{"db_id":"ea24770278021c00f25a8b13bceb2a2c","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"kind":"related","label":"14.24","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","title":"修复回退到归档后级联备库无法重新连接的问题","url":"/docs/compare/?release=14.24#14.24-744489dc4872d6f1-2","version":"14.24"}],"relations":[{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9","f6e281e04c97bcdc5fa29a25f60517ca"],"same_day":true,"statement_hash":"07a38d896c94ef2711ebb1c7c66bf1537f00d81b7488271a922229ab5b8f1962"},"rule":2,"target":"1b34d3e2b18d75096fd2914d3673446c","type":"equivalent"},{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"rule":2,"target":"1ba572e4a9f5584ecce320e293d4b258","type":"related"},{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9","f6e281e04c97bcdc5fa29a25f60517ca"],"same_day":true,"statement_hash":"07a38d896c94ef2711ebb1c7c66bf1537f00d81b7488271a922229ab5b8f1962"},"rule":2,"target":"70897dba323af27792543b2311799668","type":"equivalent"},{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"rule":2,"target":"771fa954f9b22168a0764dc12074dadb","type":"related"},{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"rule":2,"target":"b17ef22f538327cabf0726e1b3f902cc","type":"related"},{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9","f6e281e04c97bcdc5fa29a25f60517ca"],"same_day":true,"statement_hash":"07a38d896c94ef2711ebb1c7c66bf1537f00d81b7488271a922229ab5b8f1962"},"rule":2,"target":"bf82a2510c4dfe4309435e9bce0ab3a4","type":"equivalent"},{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"rule":2,"target":"bfa74492dd2c8ed5f4b0a4321cb63c85","type":"related"},{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9","f6e281e04c97bcdc5fa29a25f60517ca"],"same_day":true,"statement_hash":"07a38d896c94ef2711ebb1c7c66bf1537f00d81b7488271a922229ab5b8f1962"},"rule":2,"target":"bfa88fa3d381bbc9b7ee7a8614ea363c","type":"equivalent"},{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"rule":2,"target":"ea24770278021c00f25a8b13bceb2a2c","type":"related"}],"section":"变更","section_path":["变更"],"source_commits":["3d724bf4f","5fb3c6389"],"source_entry_id":"14.24/changes/005","source_hash":"0882ee46c76d41ed283906619f1946c17cff949f0d56ba3339ca54996a28df8a","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"07a38d896c94ef2711ebb1c7c66bf1537f00d81b7488271a922229ab5b8f1962","text":"修复 to_char() 处理过长时区缩写时发生的缓冲区越界写入（Tom Lane）§ 这很容易导致服务器崩溃，并且已有报告表明可利用该问题执行任意代码。 PostgreSQL 项目感谢 Hcamael、Amjad Shahzad、AntAISecurityLab 的 Tan Zhen、Tomer Fichman、Zheng Yu、Amy Burnett（OpenAI Codex Security）、Rick de Jager、Heewon Song、Sylvie Mayer、Aleksander Alekseev 和 Hillai Ben Sasson 报告此问题。（CVE-2026-14669）","title":"修复 to_char() 处理过长时区缩写时发生的缓冲区越界写入","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["127a0673f","3179253c2","343aabf1d","7df2aa8ef","890327639","b7e5c3f63","e91dcfcca"],"commit_groups":[["127a0673f","3179253c2","343aabf1d","7df2aa8ef","890327639","b7e5c3f63","e91dcfcca"]],"commits":["890327639"],"cves":["CVE-2026-14664"],"db_id":"8e5a5f5c59f91019e7f4f9160ae97951","html":"\u003cp\u003e\n      修复正则表达式匹配/拆分函数中的缓冲区越界写入（Masahiko Sawada）\u003ca href=\"https://postgr.es/c/890327639\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      如果传入编码无效的数据，这些函数可能会在转换缓冲区末尾之外写入数据。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Francesco Verardi 报告此问题。（CVE-2026-14664）\n     \u003c/p\u003e","id":"14.24-e8fecccd48726ac8","identity_text":"Fix buffer overrun in regexp match/split functions (Masahiko Sawada) If passed invalidly-encoded data, these functions could write past the end of their conversion buffer. The PostgreSQL Project thanks Francesco Verardi for reporting this problem. (CVE-2026-14664)","part":"changes","patch_ids":["0cfa785ead8bfc886613fffe5a36e1bc"],"related_changes":[{"db_id":"31c6d0327b9be4008171a2064e268f6c","evidence":{"patch_ids":["0cfa785ead8bfc886613fffe5a36e1bc"],"same_day":true,"statement_hash":"966f554e1e936775481250a24075b22027e89685eec1e0c08a9bfd4f761ad444"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复正则表达式匹配/拆分函数中的缓冲区越界写入","url":"/docs/compare/?release=18.6#18.6-94204615ddc5390c","version":"18.6"},{"db_id":"ee60c1b700f965a0913e70294c9927f5","evidence":{"patch_ids":["0cfa785ead8bfc886613fffe5a36e1bc"],"same_day":true,"statement_hash":"966f554e1e936775481250a24075b22027e89685eec1e0c08a9bfd4f761ad444"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复正则表达式匹配/拆分函数中的缓冲区越界写入","url":"/docs/compare/?release=17.11#17.11-cb1b743a0208c3c0","version":"17.11"},{"db_id":"2dff40febce19283ae38aa647816cd73","evidence":{"patch_ids":["0cfa785ead8bfc886613fffe5a36e1bc"],"same_day":true,"statement_hash":"966f554e1e936775481250a24075b22027e89685eec1e0c08a9bfd4f761ad444"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复正则表达式匹配/拆分函数中的缓冲区越界写入","url":"/docs/compare/?release=16.15#16.15-81cf49bd6b870f85","version":"16.15"},{"db_id":"ee22496a80ac478c7a0e734782b86377","evidence":{"patch_ids":["0cfa785ead8bfc886613fffe5a36e1bc"],"same_day":true,"statement_hash":"966f554e1e936775481250a24075b22027e89685eec1e0c08a9bfd4f761ad444"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复正则表达式匹配/拆分函数中的缓冲区越界写入","url":"/docs/compare/?release=15.19#15.19-8a672df6043ea295","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["0cfa785ead8bfc886613fffe5a36e1bc"],"same_day":true,"statement_hash":"966f554e1e936775481250a24075b22027e89685eec1e0c08a9bfd4f761ad444"},"rule":2,"target":"2dff40febce19283ae38aa647816cd73","type":"equivalent"},{"evidence":{"patch_ids":["0cfa785ead8bfc886613fffe5a36e1bc"],"same_day":true,"statement_hash":"966f554e1e936775481250a24075b22027e89685eec1e0c08a9bfd4f761ad444"},"rule":2,"target":"31c6d0327b9be4008171a2064e268f6c","type":"equivalent"},{"evidence":{"patch_ids":["0cfa785ead8bfc886613fffe5a36e1bc"],"same_day":true,"statement_hash":"966f554e1e936775481250a24075b22027e89685eec1e0c08a9bfd4f761ad444"},"rule":2,"target":"ee22496a80ac478c7a0e734782b86377","type":"equivalent"},{"evidence":{"patch_ids":["0cfa785ead8bfc886613fffe5a36e1bc"],"same_day":true,"statement_hash":"966f554e1e936775481250a24075b22027e89685eec1e0c08a9bfd4f761ad444"},"rule":2,"target":"ee60c1b700f965a0913e70294c9927f5","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["890327639"],"source_entry_id":"14.24/changes/006","source_hash":"560d148746d9ce7bf41d95f368996df3a331b74b4cf8c23cdda5ba0ebaecfff9","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"966f554e1e936775481250a24075b22027e89685eec1e0c08a9bfd4f761ad444","text":"修复正则表达式匹配/拆分函数中的缓冲区越界写入（Masahiko Sawada）§ 如果传入编码无效的数据，这些函数可能会在转换缓冲区末尾之外写入数据。 PostgreSQL 项目感谢 Francesco Verardi 报告此问题。（CVE-2026-14664）","title":"修复正则表达式匹配/拆分函数中的缓冲区越界写入","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["08e812c02","3b925133b","42d333a78","80ce920a5","849da8210","a16c31d39","ac450853d"],"commit_groups":[["08e812c02","3b925133b","42d333a78","80ce920a5","849da8210","a16c31d39","ac450853d"]],"commits":["42d333a78"],"cves":["CVE-2026-18024"],"db_id":"776c34393ca8da3ea9c128e3d7219ad3","html":"\u003cp\u003e\n      增强 \u003ccode\u003eascii()\u003c/code\u003e 函数对无效输入的防护（Michael Paquier）\u003ca href=\"https://postgr.es/c/42d333a78\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      通过提供编码无效的输入，可以诱使此函数读取并返回几个不应访问的数据字节。在启用断言的构建中，还可能触发其断言。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Hcamael 报告此问题。（CVE-2026-18024）\n     \u003c/p\u003e","id":"14.24-7c4016acc1446315","identity_text":"Harden the ascii() function against invalid input (Michael Paquier) By supplying invalidly-encoded input, this function could be coaxed to read and return a few bytes of data that it shouldn't. In assert-enabled builds, its assertions could be triggered too. The PostgreSQL Project thanks Hcamael for reporting this problem. (CVE-2026-18024)","part":"changes","patch_ids":["55b264296776b9b13ab6e5f986e375f2"],"related_changes":[{"db_id":"28116a0caca0f02980e6eaa33ad62878","evidence":{"patch_ids":["55b264296776b9b13ab6e5f986e375f2"],"same_day":true,"statement_hash":"30f93fe9d01d5c3e7f51b7ee86b38f0ddd66109774cc7f5bd732db874c26c1a3"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"增强 ascii() 函数对无效输入的防护","url":"/docs/compare/?release=18.6#18.6-4a45e658fb69cefb","version":"18.6"},{"db_id":"12383fa89e42b03b68791e4222af5d42","evidence":{"patch_ids":["55b264296776b9b13ab6e5f986e375f2"],"same_day":true,"statement_hash":"30f93fe9d01d5c3e7f51b7ee86b38f0ddd66109774cc7f5bd732db874c26c1a3"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"增强 ascii() 函数对无效输入的防护","url":"/docs/compare/?release=17.11#17.11-e6de3d1ea5ee5a52","version":"17.11"},{"db_id":"5a7d1cc5fb2e41a7a2acbb0c59894992","evidence":{"patch_ids":["55b264296776b9b13ab6e5f986e375f2"],"same_day":true,"statement_hash":"30f93fe9d01d5c3e7f51b7ee86b38f0ddd66109774cc7f5bd732db874c26c1a3"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"增强 ascii() 函数对无效输入的防护","url":"/docs/compare/?release=16.15#16.15-483eebd2875e58ea","version":"16.15"},{"db_id":"3fcea79a14fe4f9b97afbae1d619ffdf","evidence":{"patch_ids":["55b264296776b9b13ab6e5f986e375f2"],"same_day":true,"statement_hash":"30f93fe9d01d5c3e7f51b7ee86b38f0ddd66109774cc7f5bd732db874c26c1a3"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"增强 ascii() 函数对无效输入的防护","url":"/docs/compare/?release=15.19#15.19-7d22c46c0b1e985e","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["55b264296776b9b13ab6e5f986e375f2"],"same_day":true,"statement_hash":"30f93fe9d01d5c3e7f51b7ee86b38f0ddd66109774cc7f5bd732db874c26c1a3"},"rule":2,"target":"12383fa89e42b03b68791e4222af5d42","type":"equivalent"},{"evidence":{"patch_ids":["55b264296776b9b13ab6e5f986e375f2"],"same_day":true,"statement_hash":"30f93fe9d01d5c3e7f51b7ee86b38f0ddd66109774cc7f5bd732db874c26c1a3"},"rule":2,"target":"28116a0caca0f02980e6eaa33ad62878","type":"equivalent"},{"evidence":{"patch_ids":["55b264296776b9b13ab6e5f986e375f2"],"same_day":true,"statement_hash":"30f93fe9d01d5c3e7f51b7ee86b38f0ddd66109774cc7f5bd732db874c26c1a3"},"rule":2,"target":"3fcea79a14fe4f9b97afbae1d619ffdf","type":"equivalent"},{"evidence":{"patch_ids":["55b264296776b9b13ab6e5f986e375f2"],"same_day":true,"statement_hash":"30f93fe9d01d5c3e7f51b7ee86b38f0ddd66109774cc7f5bd732db874c26c1a3"},"rule":2,"target":"5a7d1cc5fb2e41a7a2acbb0c59894992","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["42d333a78"],"source_entry_id":"14.24/changes/007","source_hash":"3ec7a0192e0b44b3130416d6d164d3204c14af42fd34891d76ce01d6856d144c","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"30f93fe9d01d5c3e7f51b7ee86b38f0ddd66109774cc7f5bd732db874c26c1a3","text":"增强 ascii() 函数对无效输入的防护（Michael Paquier）§ 通过提供编码无效的输入，可以诱使此函数读取并返回几个不应访问的数据字节。在启用断言的构建中，还可能触发其断言。 PostgreSQL 项目感谢 Hcamael 报告此问题。（CVE-2026-18024）","title":"增强 ascii() 函数对无效输入的防护","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["08454e8b2","57835938f","8d428c6e6","b3d9262bb"],"commit_groups":[["08454e8b2","57835938f","b3d9262bb"],["8d428c6e6"]],"commits":[],"cves":["CVE-2026-16238"],"db_id":"23063a48b3c2ddae3e3c1623fd1552b5","html":"\u003cp\u003e\n      修复 \u003ccode\u003epg_restore_attribute_stats()\u003c/code\u003e 对多范围类型的处理（OpenAI Security Research Team）\n     \u003c/p\u003e\u003cp\u003e\n\u003ccode\u003epg_restore_attribute_stats()\u003c/code\u003e 将多范围类型当作其底层范围类型处理。对于边界直方图，这是正确的，但对于其他所有统计信息类型都是错误的。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Amy Burnett（OpenAI Codex Security）报告此问题。（CVE-2026-16238）\n     \u003c/p\u003e","id":"14.24-5d9a6f9f262886ec","identity_text":"Fix multirange type handling in pg_restore_attribute_stats() (OpenAI Security Research Team) pg_restore_attribute_stats() treated multirange types just like their underlying range type. This works correctly for the bounds histogram, but it was wrong for all the other statistics kinds. The PostgreSQL Project thanks Amy Burnett (OpenAI Codex Security) for reporting this problem. (CVE-2026-16238)","part":"changes","patch_ids":["d27616df77f838ec6d65ceac3dab4d29","e919d719afc48bf0f48ebde0e7586d45"],"related_changes":[{"db_id":"b73333feb74980fc954bc5f235124549","evidence":{"patch_ids":["d27616df77f838ec6d65ceac3dab4d29","e919d719afc48bf0f48ebde0e7586d45"],"same_day":true,"statement_hash":"6c702ad16b71228cee81cbc85de20c25fe06c4ec29202dc0be958c9f409a702d"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 pg_restore_attribute_stats() 对多范围类型的处理","url":"/docs/compare/?release=18.6#18.6-61ef917ba36ebc0f","version":"18.6"},{"db_id":"c02d2730726a9bba001c3dcad007a406","evidence":{"patch_ids":["d27616df77f838ec6d65ceac3dab4d29","e919d719afc48bf0f48ebde0e7586d45"],"same_day":true,"statement_hash":"6c702ad16b71228cee81cbc85de20c25fe06c4ec29202dc0be958c9f409a702d"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 pg_restore_attribute_stats() 对多范围类型的处理","url":"/docs/compare/?release=17.11#17.11-5d9a6f9f262886ec","version":"17.11"},{"db_id":"e8b2ed03b7135b067945fe6134a48d0c","evidence":{"patch_ids":["d27616df77f838ec6d65ceac3dab4d29","e919d719afc48bf0f48ebde0e7586d45"],"same_day":true,"statement_hash":"6c702ad16b71228cee81cbc85de20c25fe06c4ec29202dc0be958c9f409a702d"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 pg_restore_attribute_stats() 对多范围类型的处理","url":"/docs/compare/?release=16.15#16.15-5d9a6f9f262886ec","version":"16.15"},{"db_id":"7cdf19717697008d9621e1145ea725cc","evidence":{"patch_ids":["d27616df77f838ec6d65ceac3dab4d29","e919d719afc48bf0f48ebde0e7586d45"],"same_day":true,"statement_hash":"6c702ad16b71228cee81cbc85de20c25fe06c4ec29202dc0be958c9f409a702d"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 pg_restore_attribute_stats() 对多范围类型的处理","url":"/docs/compare/?release=15.19#15.19-5d9a6f9f262886ec","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["d27616df77f838ec6d65ceac3dab4d29","e919d719afc48bf0f48ebde0e7586d45"],"same_day":true,"statement_hash":"6c702ad16b71228cee81cbc85de20c25fe06c4ec29202dc0be958c9f409a702d"},"rule":2,"target":"7cdf19717697008d9621e1145ea725cc","type":"equivalent"},{"evidence":{"patch_ids":["d27616df77f838ec6d65ceac3dab4d29","e919d719afc48bf0f48ebde0e7586d45"],"same_day":true,"statement_hash":"6c702ad16b71228cee81cbc85de20c25fe06c4ec29202dc0be958c9f409a702d"},"rule":2,"target":"b73333feb74980fc954bc5f235124549","type":"equivalent"},{"evidence":{"patch_ids":["d27616df77f838ec6d65ceac3dab4d29","e919d719afc48bf0f48ebde0e7586d45"],"same_day":true,"statement_hash":"6c702ad16b71228cee81cbc85de20c25fe06c4ec29202dc0be958c9f409a702d"},"rule":2,"target":"c02d2730726a9bba001c3dcad007a406","type":"equivalent"},{"evidence":{"patch_ids":["d27616df77f838ec6d65ceac3dab4d29","e919d719afc48bf0f48ebde0e7586d45"],"same_day":true,"statement_hash":"6c702ad16b71228cee81cbc85de20c25fe06c4ec29202dc0be958c9f409a702d"},"rule":2,"target":"e8b2ed03b7135b067945fe6134a48d0c","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["57835938f","8d428c6e6"],"source_entry_id":"14.24/changes/008","source_hash":"307fae39b42e66fdb916abdaa0d4a62270ca6fbb1038040ff752f2c348b63a99","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"6c702ad16b71228cee81cbc85de20c25fe06c4ec29202dc0be958c9f409a702d","text":"修复 pg_restore_attribute_stats() 对多范围类型的处理（OpenAI Security Research Team） pg_restore_attribute_stats() 将多范围类型当作其底层范围类型处理。对于边界直方图，这是正确的，但对于其他所有统计信息类型都是错误的。 PostgreSQL 项目感谢 Amy Burnett（OpenAI Codex Security）报告此问题。（CVE-2026-16238）","title":"修复 pg_restore_attribute_stats() 对多范围类型的处理","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["005ffaa7f","0d60ee717","0ebf896f4","591192e2e","59205c7e9","8f0c3d2fe","a2cb5a1cf"],"commit_groups":[["005ffaa7f","0d60ee717","0ebf896f4","591192e2e","59205c7e9","8f0c3d2fe","a2cb5a1cf"]],"commits":["59205c7e9"],"cves":["CVE-2026-14668"],"db_id":"9bd6480c825dec4b7dd7e98d8eca9b8f","html":"\u003cp\u003e\n      让 \u003ccode\u003escalarineqsel()\u003c/code\u003e 检查预期为 \u003ccode\u003etid\u003c/code\u003e\n      类型的常量是否确实属于该类型（Tom Lane）\u003ca href=\"https://postgr.es/c/59205c7e9\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      对于所有使用此估算器的内置操作符，这一预期都会成立，但恶意构造的操作符可能违反该预期，从而导致崩溃或服务器内存泄露。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Hcamael 报告此问题。（CVE-2026-14668）\n     \u003c/p\u003e","id":"14.24-5956eea8fb565470","identity_text":"Make scalarineqsel() check that a constant it expects to be of type tid actually is (Tom Lane) This expectation will hold for all the built-in operators that use this estimator, but a maliciously-constructed operator could violate it, leading to a crash or server memory disclosure. The PostgreSQL Project thanks Hcamael for reporting this problem. (CVE-2026-14668)","part":"changes","patch_ids":["de7610ed8a59864556ff1fc7a996e26b"],"related_changes":[{"db_id":"97ac47be877760addc2f5b0afd4a077b","evidence":{"patch_ids":["de7610ed8a59864556ff1fc7a996e26b"],"same_day":true,"statement_hash":"9af3f49dfa69a353a456c0aa2751b844ae492634dd94bd7ac2ae7a38d22121ba"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"让 scalarineqsel() 检查预期为 tid 类型的常量是否确实属于该类型","url":"/docs/compare/?release=18.6#18.6-d63d1269e786113b","version":"18.6"},{"db_id":"7cbf7cb5e5571e3fde38e116219b7ff1","evidence":{"patch_ids":["de7610ed8a59864556ff1fc7a996e26b"],"same_day":true,"statement_hash":"9af3f49dfa69a353a456c0aa2751b844ae492634dd94bd7ac2ae7a38d22121ba"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"让 scalarineqsel() 检查预期为 tid 类型的常量是否确实属于该类型","url":"/docs/compare/?release=17.11#17.11-3000fb5c37bacd7b","version":"17.11"},{"db_id":"8e21096b01a0beb228febdc9d9b21e1a","evidence":{"patch_ids":["de7610ed8a59864556ff1fc7a996e26b"],"same_day":true,"statement_hash":"9af3f49dfa69a353a456c0aa2751b844ae492634dd94bd7ac2ae7a38d22121ba"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"让 scalarineqsel() 检查预期为 tid 类型的常量是否确实属于该类型","url":"/docs/compare/?release=16.15#16.15-ae6cefffe2c19e7b","version":"16.15"},{"db_id":"0c4b36600df59cbe54ae892784279e12","evidence":{"patch_ids":["de7610ed8a59864556ff1fc7a996e26b"],"same_day":true,"statement_hash":"9af3f49dfa69a353a456c0aa2751b844ae492634dd94bd7ac2ae7a38d22121ba"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"让 scalarineqsel() 检查预期为 tid 类型的常量是否确实属于该类型","url":"/docs/compare/?release=15.19#15.19-e5c6e044e35ae26d","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["de7610ed8a59864556ff1fc7a996e26b"],"same_day":true,"statement_hash":"9af3f49dfa69a353a456c0aa2751b844ae492634dd94bd7ac2ae7a38d22121ba"},"rule":2,"target":"0c4b36600df59cbe54ae892784279e12","type":"equivalent"},{"evidence":{"patch_ids":["de7610ed8a59864556ff1fc7a996e26b"],"same_day":true,"statement_hash":"9af3f49dfa69a353a456c0aa2751b844ae492634dd94bd7ac2ae7a38d22121ba"},"rule":2,"target":"7cbf7cb5e5571e3fde38e116219b7ff1","type":"equivalent"},{"evidence":{"patch_ids":["de7610ed8a59864556ff1fc7a996e26b"],"same_day":true,"statement_hash":"9af3f49dfa69a353a456c0aa2751b844ae492634dd94bd7ac2ae7a38d22121ba"},"rule":2,"target":"8e21096b01a0beb228febdc9d9b21e1a","type":"equivalent"},{"evidence":{"patch_ids":["de7610ed8a59864556ff1fc7a996e26b"],"same_day":true,"statement_hash":"9af3f49dfa69a353a456c0aa2751b844ae492634dd94bd7ac2ae7a38d22121ba"},"rule":2,"target":"97ac47be877760addc2f5b0afd4a077b","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["59205c7e9"],"source_entry_id":"14.24/changes/009","source_hash":"38716480b78d76e4039a845bc904eed98eef6e6cdcbfed43b1cc088a07de00dc","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"9af3f49dfa69a353a456c0aa2751b844ae492634dd94bd7ac2ae7a38d22121ba","text":"让 scalarineqsel() 检查预期为 tid 类型的常量是否确实属于该类型（Tom Lane）§ 对于所有使用此估算器的内置操作符，这一预期都会成立，但恶意构造的操作符可能违反该预期，从而导致崩溃或服务器内存泄露。 PostgreSQL 项目感谢 Hcamael 报告此问题。（CVE-2026-14668）","title":"让 scalarineqsel() 检查预期为 tid 类型的常量是否确实属于该类型","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["1e3014f37","23d9ad771","3b2238fbe","4f8b37b6b","7c1a8805a","7c2ba321d","84b6a7a06","8e87bd473","90649b6f8","cb947ca31","dddc8a69f","e25135057","f443d0a0a","fe0b5bd6d"],"commit_groups":[["1e3014f37","3b2238fbe","4f8b37b6b","84b6a7a06","8e87bd473","90649b6f8","dddc8a69f"],["23d9ad771","7c1a8805a","7c2ba321d","cb947ca31","e25135057","f443d0a0a","fe0b5bd6d"]],"commits":["1e3014f37","7c2ba321d"],"cves":["CVE-2026-14662"],"db_id":"728b5628883585075c121bd29db0affe","html":"\u003cp\u003e\n      增强 \u003ccode\u003etsvector\u003c/code\u003e 和 \u003ccode\u003etsquery\u003c/code\u003e 代码对超长值的防护（包括单个词位以及向量/查询的总长度）（Tom Lane）\u003ca href=\"https://postgr.es/c/7c2ba321d\"\u003e§\u003c/a\u003e\n\u003ca href=\"https://postgr.es/c/1e3014f37\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      文档所述限制并未在所有代码路径上强制执行。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Yuhang Wu、Zhenpeng Lin、Zheng Yu 和 Hcamael 报告这些问题。（CVE-2026-14662）\n     \u003c/p\u003e","id":"14.24-60bda94b8310bec9","identity_text":"Harden tsvector and tsquery code against overly long values (both individual lexemes and total vector/query length) (Tom Lane) The documented limits were not enforced in all code paths. The PostgreSQL Project thanks Yuhang Wu, Zhenpeng Lin, Zheng Yu, and Hcamael for reporting these problems. (CVE-2026-14662)","part":"changes","patch_ids":["5d937de349e172af32f322b84994627c","8594911de53a70a64ff7a92a7e2e7410"],"related_changes":[{"db_id":"e8daa5e986b5139aa334ffb65fe716c9","evidence":{"patch_ids":["5d937de349e172af32f322b84994627c","8594911de53a70a64ff7a92a7e2e7410"],"same_day":true,"statement_hash":"58ee7f5cd2b407484897fe1a7e956c16ce0212b7ffe535ead9c50c21ba819c1e"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"增强 tsvector 和 tsquery 代码对超长值的防护（包括单个词位以及向量/查询的总长度）","url":"/docs/compare/?release=18.6#18.6-774bcf033add5976","version":"18.6"},{"db_id":"aa4dcca3c56a82ca052b2bdbc7e68c1b","evidence":{"patch_ids":["5d937de349e172af32f322b84994627c","8594911de53a70a64ff7a92a7e2e7410"],"same_day":true,"statement_hash":"58ee7f5cd2b407484897fe1a7e956c16ce0212b7ffe535ead9c50c21ba819c1e"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"增强 tsvector 和 tsquery 代码对超长值的防护（包括单个词位以及向量/查询的总长度）","url":"/docs/compare/?release=17.11#17.11-730aec962ef92894","version":"17.11"},{"db_id":"f4f98b5e09530fc0d9eabe85409d03ef","evidence":{"patch_ids":["5d937de349e172af32f322b84994627c","8594911de53a70a64ff7a92a7e2e7410"],"same_day":true,"statement_hash":"58ee7f5cd2b407484897fe1a7e956c16ce0212b7ffe535ead9c50c21ba819c1e"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"增强 tsvector 和 tsquery 代码对超长值的防护（包括单个词位以及向量/查询的总长度）","url":"/docs/compare/?release=16.15#16.15-60c62245c66747ba","version":"16.15"},{"db_id":"3d26273adc446717f1dd7040f0311025","evidence":{"patch_ids":["5d937de349e172af32f322b84994627c","8594911de53a70a64ff7a92a7e2e7410"],"same_day":true,"statement_hash":"58ee7f5cd2b407484897fe1a7e956c16ce0212b7ffe535ead9c50c21ba819c1e"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"增强 tsvector 和 tsquery 代码对超长值的防护（包括单个词位以及向量/查询的总长度）","url":"/docs/compare/?release=15.19#15.19-17c179b4d9e41496","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["5d937de349e172af32f322b84994627c","8594911de53a70a64ff7a92a7e2e7410"],"same_day":true,"statement_hash":"58ee7f5cd2b407484897fe1a7e956c16ce0212b7ffe535ead9c50c21ba819c1e"},"rule":2,"target":"3d26273adc446717f1dd7040f0311025","type":"equivalent"},{"evidence":{"patch_ids":["5d937de349e172af32f322b84994627c","8594911de53a70a64ff7a92a7e2e7410"],"same_day":true,"statement_hash":"58ee7f5cd2b407484897fe1a7e956c16ce0212b7ffe535ead9c50c21ba819c1e"},"rule":2,"target":"aa4dcca3c56a82ca052b2bdbc7e68c1b","type":"equivalent"},{"evidence":{"patch_ids":["5d937de349e172af32f322b84994627c","8594911de53a70a64ff7a92a7e2e7410"],"same_day":true,"statement_hash":"58ee7f5cd2b407484897fe1a7e956c16ce0212b7ffe535ead9c50c21ba819c1e"},"rule":2,"target":"e8daa5e986b5139aa334ffb65fe716c9","type":"equivalent"},{"evidence":{"patch_ids":["5d937de349e172af32f322b84994627c","8594911de53a70a64ff7a92a7e2e7410"],"same_day":true,"statement_hash":"58ee7f5cd2b407484897fe1a7e956c16ce0212b7ffe535ead9c50c21ba819c1e"},"rule":2,"target":"f4f98b5e09530fc0d9eabe85409d03ef","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["1e3014f37","7c2ba321d"],"source_entry_id":"14.24/changes/010","source_hash":"11abc2c10a1e9cf56cfe04b2992b0340997476467f5efc01f7132c474e877054","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"58ee7f5cd2b407484897fe1a7e956c16ce0212b7ffe535ead9c50c21ba819c1e","text":"增强 tsvector 和 tsquery 代码对超长值的防护（包括单个词位以及向量/查询的总长度）（Tom Lane）§ § 文档所述限制并未在所有代码路径上强制执行。 PostgreSQL 项目感谢 Yuhang Wu、Zhenpeng Lin、Zheng Yu 和 Hcamael 报告这些问题。（CVE-2026-14662）","title":"增强 tsvector 和 tsquery 代码对超长值的防护（包括单个词位以及向量/查询的总长度）","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["2a03f21da","32e0d25d4","42d9749b7","60e7329b9","797e3cc4c","7bd56f7a3","7f0e1aac7","8a40f4b09","8c67c4cf5","92972e815","b417744a7","c7f462838","cf44ff5e6","eb2fa2704"],"commit_groups":[["2a03f21da","32e0d25d4","42d9749b7","60e7329b9","8a40f4b09","c7f462838","eb2fa2704"],["797e3cc4c","7bd56f7a3","7f0e1aac7","8c67c4cf5","92972e815","b417744a7","cf44ff5e6"]],"commits":["c7f462838","cf44ff5e6"],"cves":["CVE-2026-14679"],"db_id":"b48c4a1b729ca10627402a86238f5a19","html":"\u003cp\u003e\n      修复多处错误地假定无需处理超过 \u003ccode\u003eFUNC_MAX_ARGS\u003c/code\u003e 个函数参数的问题（Tom Lane）\u003ca href=\"https://postgr.es/c/cf44ff5e6\"\u003e§\u003c/a\u003e\n\u003ca href=\"https://postgr.es/c/c7f462838\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      特别是，服务器对聚合函数参数数量的实际限制是\n      \u003ccode\u003eFUNC_MAX_ARGS - 1\u003c/code\u003e，但解析器未强制执行这一限制，给后续处理带来隐患。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Zheng Yu、ylwangtju 和 Masahiko Sawada 报告这些问题。（CVE-2026-14679）\n     \u003c/p\u003e","id":"14.24-573a25e391fc116a","identity_text":"Fix various places that mistakenly assumed they would not have to deal with more than FUNC_MAX_ARGS function arguments (Tom Lane) Notably, the server's actual limit on the number of arguments to an aggregate function is FUNC_MAX_ARGS - 1, but the parser failed to enforce that, creating hazards downstream. The PostgreSQL Project thanks Zheng Yu, ylwangtju, and Masahiko Sawada for reporting these problems. (CVE-2026-14679)","part":"changes","patch_ids":["9c4aca692d373e760403997525c9e073","ea0a783b3715942dc32c661399220cb1"],"related_changes":[{"db_id":"4a55b4d9f252330dd0f0f94102631952","evidence":{"patch_ids":["9c4aca692d373e760403997525c9e073","ea0a783b3715942dc32c661399220cb1"],"same_day":true,"statement_hash":"41c4e79daa1ea65508b91d04fa5138fb9c313606a4ceade697072cb89843941f"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复多处错误地假定无需处理超过 FUNC_MAX_ARGS 个函数参数的问题","url":"/docs/compare/?release=18.6#18.6-fe89a6f688a29e60","version":"18.6"},{"db_id":"349adc6ad9cc12d1c04aad6e3d659917","evidence":{"patch_ids":["9c4aca692d373e760403997525c9e073","ea0a783b3715942dc32c661399220cb1"],"same_day":true,"statement_hash":"41c4e79daa1ea65508b91d04fa5138fb9c313606a4ceade697072cb89843941f"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复多处错误地假定无需处理超过 FUNC_MAX_ARGS 个函数参数的问题","url":"/docs/compare/?release=17.11#17.11-dd9a429d3ce13500","version":"17.11"},{"db_id":"bea7e191e30a8a238690f6d536666b13","evidence":{"patch_ids":["9c4aca692d373e760403997525c9e073","ea0a783b3715942dc32c661399220cb1"],"same_day":true,"statement_hash":"41c4e79daa1ea65508b91d04fa5138fb9c313606a4ceade697072cb89843941f"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复多处错误地假定无需处理超过 FUNC_MAX_ARGS 个函数参数的问题","url":"/docs/compare/?release=16.15#16.15-4e4499530e41620f","version":"16.15"},{"db_id":"41c6f110168cdb7324811a04a2654cf2","evidence":{"patch_ids":["9c4aca692d373e760403997525c9e073","ea0a783b3715942dc32c661399220cb1"],"same_day":true,"statement_hash":"41c4e79daa1ea65508b91d04fa5138fb9c313606a4ceade697072cb89843941f"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复多处错误地假定无需处理超过 FUNC_MAX_ARGS 个函数参数的问题","url":"/docs/compare/?release=15.19#15.19-a19bdbedae40aee8","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["9c4aca692d373e760403997525c9e073","ea0a783b3715942dc32c661399220cb1"],"same_day":true,"statement_hash":"41c4e79daa1ea65508b91d04fa5138fb9c313606a4ceade697072cb89843941f"},"rule":2,"target":"349adc6ad9cc12d1c04aad6e3d659917","type":"equivalent"},{"evidence":{"patch_ids":["9c4aca692d373e760403997525c9e073","ea0a783b3715942dc32c661399220cb1"],"same_day":true,"statement_hash":"41c4e79daa1ea65508b91d04fa5138fb9c313606a4ceade697072cb89843941f"},"rule":2,"target":"41c6f110168cdb7324811a04a2654cf2","type":"equivalent"},{"evidence":{"patch_ids":["9c4aca692d373e760403997525c9e073","ea0a783b3715942dc32c661399220cb1"],"same_day":true,"statement_hash":"41c4e79daa1ea65508b91d04fa5138fb9c313606a4ceade697072cb89843941f"},"rule":2,"target":"4a55b4d9f252330dd0f0f94102631952","type":"equivalent"},{"evidence":{"patch_ids":["9c4aca692d373e760403997525c9e073","ea0a783b3715942dc32c661399220cb1"],"same_day":true,"statement_hash":"41c4e79daa1ea65508b91d04fa5138fb9c313606a4ceade697072cb89843941f"},"rule":2,"target":"bea7e191e30a8a238690f6d536666b13","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["c7f462838","cf44ff5e6"],"source_entry_id":"14.24/changes/011","source_hash":"3d64c3850e983c002545d0ee776bc94fec49bce9fc92e6c8ae2ff08f5a2d3d0e","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"41c4e79daa1ea65508b91d04fa5138fb9c313606a4ceade697072cb89843941f","text":"修复多处错误地假定无需处理超过 FUNC_MAX_ARGS 个函数参数的问题（Tom Lane）§ § 特别是，服务器对聚合函数参数数量的实际限制是 FUNC_MAX_ARGS - 1，但解析器未强制执行这一限制，给后续处理带来隐患。 PostgreSQL 项目感谢 Zheng Yu、ylwangtju 和 Masahiko Sawada 报告这些问题。（CVE-2026-14679）","title":"修复多处错误地假定无需处理超过 FUNC_MAX_ARGS 个函数参数的问题","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["155dacbc5","1aa601b4f","21a00de43","21d8cfb18","4c0c1b2cd","54649de65","722695db1","7f308dd7c","83d0a083f","8f7e35b08","913fe0c31","d6e861e19","e926a9aac","eb9e55297"],"commit_groups":[["155dacbc5","21a00de43","4c0c1b2cd","54649de65","8f7e35b08","e926a9aac","eb9e55297"],["1aa601b4f","21d8cfb18","722695db1","7f308dd7c","83d0a083f","913fe0c31","d6e861e19"]],"commits":["155dacbc5","913fe0c31"],"cves":["CVE-2026-14680"],"db_id":"b56373871b3aaa929aaba36a65e4eb45","html":"\u003cp\u003e\n      拒绝从 SQL 调用接受或返回 \u003ccode\u003einternal\u003c/code\u003e 类型的函数（Tom Lane）\u003ca href=\"https://postgr.es/c/155dacbc5\"\u003e§\u003c/a\u003e\n\u003ca href=\"https://postgr.es/c/913fe0c31\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      现有防护已被证明不足，因此添加更明确的检查。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Amy Burnett（OpenAI Codex Security）报告此问题。（CVE-2026-14680）\n     \u003c/p\u003e","id":"14.24-d4901f423633ca69","identity_text":"Reject calls from SQL to functions that take or return type internal (Tom Lane) The existing defenses against doing this have been shown to be insufficient, so add more explicit checks. The PostgreSQL Project thanks Amy Burnett (OpenAI Codex Security) for reporting this problem. (CVE-2026-14680)","part":"changes","patch_ids":["8b623dad3bf883bcb9bd41023fc8f168","b94f9935e7be4a2be88c49eae8a6ae70"],"related_changes":[{"db_id":"02bb5a11139923dd7f170a94556495c3","evidence":{"patch_ids":["8b623dad3bf883bcb9bd41023fc8f168","b94f9935e7be4a2be88c49eae8a6ae70"],"same_day":true,"statement_hash":"713f97bceae2187dec2f42b397097077fb7eec20b6eddb9a6fb32f8878d44f9f"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"拒绝从 SQL 调用接受或返回 internal 类型的函数","url":"/docs/compare/?release=18.6#18.6-a8d1f97d70d85295","version":"18.6"},{"db_id":"42aa2e3353b4536c48a5271f47f0eb90","evidence":{"patch_ids":["8b623dad3bf883bcb9bd41023fc8f168","b94f9935e7be4a2be88c49eae8a6ae70"],"same_day":true,"statement_hash":"713f97bceae2187dec2f42b397097077fb7eec20b6eddb9a6fb32f8878d44f9f"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"拒绝从 SQL 调用接受或返回 internal 类型的函数","url":"/docs/compare/?release=17.11#17.11-ea70ef62a58da283","version":"17.11"},{"db_id":"e54c1abdbc2feb1d5c81f31cc4a073f8","evidence":{"patch_ids":["8b623dad3bf883bcb9bd41023fc8f168","b94f9935e7be4a2be88c49eae8a6ae70"],"same_day":true,"statement_hash":"713f97bceae2187dec2f42b397097077fb7eec20b6eddb9a6fb32f8878d44f9f"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"拒绝从 SQL 调用接受或返回 internal 类型的函数","url":"/docs/compare/?release=16.15#16.15-34c662185f18a805","version":"16.15"},{"db_id":"97ff2029068cd51a1802927b5b54f2d3","evidence":{"patch_ids":["8b623dad3bf883bcb9bd41023fc8f168","b94f9935e7be4a2be88c49eae8a6ae70"],"same_day":true,"statement_hash":"713f97bceae2187dec2f42b397097077fb7eec20b6eddb9a6fb32f8878d44f9f"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"拒绝从 SQL 调用接受或返回 internal 类型的函数","url":"/docs/compare/?release=15.19#15.19-945b15baee4c22d6","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["8b623dad3bf883bcb9bd41023fc8f168","b94f9935e7be4a2be88c49eae8a6ae70"],"same_day":true,"statement_hash":"713f97bceae2187dec2f42b397097077fb7eec20b6eddb9a6fb32f8878d44f9f"},"rule":2,"target":"02bb5a11139923dd7f170a94556495c3","type":"equivalent"},{"evidence":{"patch_ids":["8b623dad3bf883bcb9bd41023fc8f168","b94f9935e7be4a2be88c49eae8a6ae70"],"same_day":true,"statement_hash":"713f97bceae2187dec2f42b397097077fb7eec20b6eddb9a6fb32f8878d44f9f"},"rule":2,"target":"42aa2e3353b4536c48a5271f47f0eb90","type":"equivalent"},{"evidence":{"patch_ids":["8b623dad3bf883bcb9bd41023fc8f168","b94f9935e7be4a2be88c49eae8a6ae70"],"same_day":true,"statement_hash":"713f97bceae2187dec2f42b397097077fb7eec20b6eddb9a6fb32f8878d44f9f"},"rule":2,"target":"97ff2029068cd51a1802927b5b54f2d3","type":"equivalent"},{"evidence":{"patch_ids":["8b623dad3bf883bcb9bd41023fc8f168","b94f9935e7be4a2be88c49eae8a6ae70"],"same_day":true,"statement_hash":"713f97bceae2187dec2f42b397097077fb7eec20b6eddb9a6fb32f8878d44f9f"},"rule":2,"target":"e54c1abdbc2feb1d5c81f31cc4a073f8","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["155dacbc5","913fe0c31"],"source_entry_id":"14.24/changes/012","source_hash":"a3868fde363ddfe92f8326b702eee1e1f3020384cae46b556b7e0416375b2ecd","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"713f97bceae2187dec2f42b397097077fb7eec20b6eddb9a6fb32f8878d44f9f","text":"拒绝从 SQL 调用接受或返回 internal 类型的函数（Tom Lane）§ § 现有防护已被证明不足，因此添加更明确的检查。 PostgreSQL 项目感谢 Amy Burnett（OpenAI Codex Security）报告此问题。（CVE-2026-14680）","title":"拒绝从 SQL 调用接受或返回 internal 类型的函数","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["6713a6e04","70a3b4e18","75a03c569","7c3367ab5","93b93f28f","a1fa24127","fb6d1ca8d"],"commit_groups":[["6713a6e04","70a3b4e18","75a03c569","7c3367ab5","93b93f28f","a1fa24127","fb6d1ca8d"]],"commits":["70a3b4e18"],"cves":["CVE-2026-6469"],"db_id":"f73abeba4ef827229ec4b724b2dbde1b","html":"\u003cp\u003e\n      在 \u003ccode\u003eALTER TABLE\u003c/code\u003e 重建扩展统计信息对象时保留其所有权（Masahiko Sawada）\u003ca href=\"https://postgr.es/c/70a3b4e18\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      此前，执行 \u003ccode\u003eALTER TABLE\u003c/code\u003e 的角色会取得这类对象的所有权，这并不合适。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Noah Misch 报告此问题。（CVE-2026-6469）\n     \u003c/p\u003e","id":"14.24-dd4b41945f77ff4b","identity_text":"Preserve the ownership of extended statistics objects when they are rebuilt by ALTER TABLE (Masahiko Sawada) Previously, the role running ALTER TABLE gained ownership of such objects, but that seems inappropriate. The PostgreSQL Project thanks Noah Misch for reporting this problem. (CVE-2026-6469)","part":"changes","patch_ids":["c847f131eaad282f5fa724ff040f1fc2"],"related_changes":[{"db_id":"4ce18d2a1cf23ef6c7ff55c667d59eae","evidence":{"patch_ids":["c847f131eaad282f5fa724ff040f1fc2"],"same_day":true,"statement_hash":"855872db5602ac9ec63e8c9b362b906eef0f29c2ae3da9a0473220149fc815a6"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"在 ALTER TABLE 重建扩展统计信息对象时保留其所有权","url":"/docs/compare/?release=18.6#18.6-c42539c16ee68f2f","version":"18.6"},{"db_id":"a511c71fb1c56e7bba21699bf176d02f","evidence":{"patch_ids":["c847f131eaad282f5fa724ff040f1fc2"],"same_day":true,"statement_hash":"855872db5602ac9ec63e8c9b362b906eef0f29c2ae3da9a0473220149fc815a6"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"在 ALTER TABLE 重建扩展统计信息对象时保留其所有权","url":"/docs/compare/?release=17.11#17.11-50a00c5a01592c04","version":"17.11"},{"db_id":"a45d7275fb35413aaeeb017f13dfbf83","evidence":{"patch_ids":["c847f131eaad282f5fa724ff040f1fc2"],"same_day":true,"statement_hash":"855872db5602ac9ec63e8c9b362b906eef0f29c2ae3da9a0473220149fc815a6"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"在 ALTER TABLE 重建扩展统计信息对象时保留其所有权","url":"/docs/compare/?release=16.15#16.15-e8ff71640bff6e1b","version":"16.15"},{"db_id":"ddb05610c858789527b1369d30b4bb1c","evidence":{"patch_ids":["c847f131eaad282f5fa724ff040f1fc2"],"same_day":true,"statement_hash":"855872db5602ac9ec63e8c9b362b906eef0f29c2ae3da9a0473220149fc815a6"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"在 ALTER TABLE 重建扩展统计信息对象时保留其所有权","url":"/docs/compare/?release=15.19#15.19-b4f58a948680ef82","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["c847f131eaad282f5fa724ff040f1fc2"],"same_day":true,"statement_hash":"855872db5602ac9ec63e8c9b362b906eef0f29c2ae3da9a0473220149fc815a6"},"rule":2,"target":"4ce18d2a1cf23ef6c7ff55c667d59eae","type":"equivalent"},{"evidence":{"patch_ids":["c847f131eaad282f5fa724ff040f1fc2"],"same_day":true,"statement_hash":"855872db5602ac9ec63e8c9b362b906eef0f29c2ae3da9a0473220149fc815a6"},"rule":2,"target":"a45d7275fb35413aaeeb017f13dfbf83","type":"equivalent"},{"evidence":{"patch_ids":["c847f131eaad282f5fa724ff040f1fc2"],"same_day":true,"statement_hash":"855872db5602ac9ec63e8c9b362b906eef0f29c2ae3da9a0473220149fc815a6"},"rule":2,"target":"a511c71fb1c56e7bba21699bf176d02f","type":"equivalent"},{"evidence":{"patch_ids":["c847f131eaad282f5fa724ff040f1fc2"],"same_day":true,"statement_hash":"855872db5602ac9ec63e8c9b362b906eef0f29c2ae3da9a0473220149fc815a6"},"rule":2,"target":"ddb05610c858789527b1369d30b4bb1c","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["70a3b4e18"],"source_entry_id":"14.24/changes/013","source_hash":"7f0371280b8269e2cdffc84154c1a0fc96b9676df80364f19473f154e8c080e5","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"855872db5602ac9ec63e8c9b362b906eef0f29c2ae3da9a0473220149fc815a6","text":"在 ALTER TABLE 重建扩展统计信息对象时保留其所有权（Masahiko Sawada）§ 此前，执行 ALTER TABLE 的角色会取得这类对象的所有权，这并不合适。 PostgreSQL 项目感谢 Noah Misch 报告此问题。（CVE-2026-6469）","title":"在 ALTER TABLE 重建扩展统计信息对象时保留其所有权","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["0ddd9098a","44ea6764b","5981fe370","5e5ea74e3","967acab87","a3832a757","f9729b507"],"commit_groups":[["0ddd9098a","44ea6764b","5981fe370","5e5ea74e3","967acab87","a3832a757","f9729b507"]],"commits":["967acab87"],"cves":["CVE-2026-15741"],"db_id":"7c6c8c33a06891c077c2444b81e229fb","html":"\u003cp\u003e\n      逆解析 \u003ccode\u003eEXTRACT()\u003c/code\u003e 函数调用时，按需为字段名加引号（Nathan Bossart）\u003ca href=\"https://postgr.es/c/967acab87\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      解析器接受 \u003ccode\u003eEXTRACT()\u003c/code\u003e 中的任意字符串字面量作为字段名，并将验证推迟到执行阶段。如果该调用被存储后再逆解析（例如在\n      \u003cspan\u003epg_dump\u003c/span\u003e 期间），字符串正文会被原样输出，从而造成 SQL 注入。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Ben Morris（与 Claude 和 Anthropic Research 协作）报告此问题。（CVE-2026-15741）\n     \u003c/p\u003e","id":"14.24-6222e3f0de511b22","identity_text":"When deparsing an EXTRACT() function call, quote the field name if needed (Nathan Bossart) The parser accepts any string literal as a field name in EXTRACT(), deferring validation to execution. If the call is stored and deparsed (for example during pg_dump), the string body was regurgitated verbatim, allowing SQL injection. The PostgreSQL Project thanks Ben Morris (in collaboration with Claude and Anthropic Research) for reporting this problem. (CVE-2026-15741)","part":"changes","patch_ids":["f0b1d31c8ffb5349b650b0e3b88706ad"],"related_changes":[{"db_id":"57a69063ff0b7f44b253f158536bbc64","evidence":{"patch_ids":["f0b1d31c8ffb5349b650b0e3b88706ad"],"same_day":true,"statement_hash":"8fb62033eeb6ede7911fce4b990d20a94bf88226d146867552627bcce9f533ef"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"逆解析 EXTRACT() 函数调用时，按需为字段名加引号","url":"/docs/compare/?release=18.6#18.6-323a1fc7b03b6859","version":"18.6"},{"db_id":"9677e1d0e314b1250191bf908cc27099","evidence":{"patch_ids":["f0b1d31c8ffb5349b650b0e3b88706ad"],"same_day":true,"statement_hash":"8fb62033eeb6ede7911fce4b990d20a94bf88226d146867552627bcce9f533ef"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"逆解析 EXTRACT() 函数调用时，按需为字段名加引号","url":"/docs/compare/?release=17.11#17.11-2bafbd49437d6dde","version":"17.11"},{"db_id":"46e3e259f29471b862d3a1eeaae97525","evidence":{"patch_ids":["f0b1d31c8ffb5349b650b0e3b88706ad"],"same_day":true,"statement_hash":"8fb62033eeb6ede7911fce4b990d20a94bf88226d146867552627bcce9f533ef"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"逆解析 EXTRACT() 函数调用时，按需为字段名加引号","url":"/docs/compare/?release=16.15#16.15-b95737c58db91b67","version":"16.15"},{"db_id":"0b6c8ce7fe6e116e2bb99be5e53dff29","evidence":{"patch_ids":["f0b1d31c8ffb5349b650b0e3b88706ad"],"same_day":true,"statement_hash":"8fb62033eeb6ede7911fce4b990d20a94bf88226d146867552627bcce9f533ef"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"逆解析 EXTRACT() 函数调用时，按需为字段名加引号","url":"/docs/compare/?release=15.19#15.19-a14e35e1025f9ddc","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["f0b1d31c8ffb5349b650b0e3b88706ad"],"same_day":true,"statement_hash":"8fb62033eeb6ede7911fce4b990d20a94bf88226d146867552627bcce9f533ef"},"rule":2,"target":"0b6c8ce7fe6e116e2bb99be5e53dff29","type":"equivalent"},{"evidence":{"patch_ids":["f0b1d31c8ffb5349b650b0e3b88706ad"],"same_day":true,"statement_hash":"8fb62033eeb6ede7911fce4b990d20a94bf88226d146867552627bcce9f533ef"},"rule":2,"target":"46e3e259f29471b862d3a1eeaae97525","type":"equivalent"},{"evidence":{"patch_ids":["f0b1d31c8ffb5349b650b0e3b88706ad"],"same_day":true,"statement_hash":"8fb62033eeb6ede7911fce4b990d20a94bf88226d146867552627bcce9f533ef"},"rule":2,"target":"57a69063ff0b7f44b253f158536bbc64","type":"equivalent"},{"evidence":{"patch_ids":["f0b1d31c8ffb5349b650b0e3b88706ad"],"same_day":true,"statement_hash":"8fb62033eeb6ede7911fce4b990d20a94bf88226d146867552627bcce9f533ef"},"rule":2,"target":"9677e1d0e314b1250191bf908cc27099","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["967acab87"],"source_entry_id":"14.24/changes/014","source_hash":"ccae8f5449a6990aa231b635075bd906d16b0b026ea50300c7b51e8acfc240d3","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"8fb62033eeb6ede7911fce4b990d20a94bf88226d146867552627bcce9f533ef","text":"逆解析 EXTRACT() 函数调用时，按需为字段名加引号（Nathan Bossart）§ 解析器接受 EXTRACT() 中的任意字符串字面量作为字段名，并将验证推迟到执行阶段。如果该调用被存储后再逆解析（例如在 pg_dump 期间），字符串正文会被原样输出，从而造成 SQL 注入。 PostgreSQL 项目感谢 Ben Morris（与 Claude 和 Anthropic Research 协作）报告此问题。（CVE-2026-15741）","title":"逆解析 EXTRACT() 函数调用时，按需为字段名加引号","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["1a358b8f2","24855357c","278053843","2e91f8548","323af0a4e","424fb7160","4fac4c108","53ed5ebd8","57f59ca1d","671359605","6dbedd48b","7a761fe40","7ce056b17","97e277402","a9f6e768a","b6e45b4f8","bb1bc525d","c062734cd","d1c8aa0b0","efdb26072","fd6d3e7e9"],"commit_groups":[["1a358b8f2","278053843","424fb7160","4fac4c108","6dbedd48b","7ce056b17","d1c8aa0b0"],["24855357c","2e91f8548","323af0a4e","97e277402","a9f6e768a","efdb26072","fd6d3e7e9"],["53ed5ebd8","57f59ca1d","671359605","7a761fe40","b6e45b4f8","bb1bc525d","c062734cd"]],"commits":["1a358b8f2","323af0a4e","b6e45b4f8"],"cves":["CVE-2026-6470"],"db_id":"f44708d4a1d626e3b8656335ae598c69","html":"\u003cp\u003e\n      在此前漏检的场景中检查数据类型的 \u003ccode\u003eUSAGE\u003c/code\u003e 权限（Nathan Bossart）\u003ca href=\"https://postgr.es/c/323af0a4e\"\u003e§\u003c/a\u003e\n\u003ca href=\"https://postgr.es/c/b6e45b4f8\"\u003e§\u003c/a\u003e\n\u003ca href=\"https://postgr.es/c/1a358b8f2\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n\u003ccode\u003eCREATE TYPE AS RANGE\u003c/code\u003e、\u003ccode\u003eALTER TABLE OF\u003c/code\u003e\n      以及创建存储表达式的命令此前都没有执行这一检查。这些遗漏使没有\n      \u003ccode\u003eUSAGE\u003c/code\u003e 权限的角色仍能创建依赖该类型的对象，并可能阻止类型所有者日后更改该类型。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Jingzhou Fu 报告此问题。（CVE-2026-6470）\n     \u003c/p\u003e","id":"14.24-045d18982c440e91","identity_text":"Check for USAGE privilege on data types in places that formerly failed to check that (Nathan Bossart) CREATE TYPE AS RANGE did not check, nor did ALTER TABLE OF, nor did commands that create stored expressions. These omissions allowed roles without USAGE privilege to nonetheless create objects depending on the type, possibly blocking the type's owner from changing the type later. The PostgreSQL Project thanks Jingzhou Fu for reporting this problem. (CVE-2026-6470)","part":"changes","patch_ids":["2470df146b9201b14de19f772c90d867","2de75ceea92e216f0b0f3ec035342d7e","76d1b8b6ad0cee83e43cc4a88d123867"],"related_changes":[{"db_id":"56232d6e6345f5c09340b72ed581eb4d","evidence":{"patch_ids":["2470df146b9201b14de19f772c90d867","2de75ceea92e216f0b0f3ec035342d7e","76d1b8b6ad0cee83e43cc4a88d123867"],"same_day":true,"statement_hash":"f6ec51b2de1a066951596511e998a5e51ac29a83e3c8e018df4d6e981ebe7068"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"在此前漏检的场景中检查数据类型的 USAGE 权限","url":"/docs/compare/?release=18.6#18.6-0b5cda175039a2c3","version":"18.6"},{"db_id":"e50027af5564cb33c0ec80ab0f86e1a9","evidence":{"patch_ids":["2470df146b9201b14de19f772c90d867","2de75ceea92e216f0b0f3ec035342d7e","76d1b8b6ad0cee83e43cc4a88d123867"],"same_day":true,"statement_hash":"f6ec51b2de1a066951596511e998a5e51ac29a83e3c8e018df4d6e981ebe7068"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"在此前漏检的场景中检查数据类型的 USAGE 权限","url":"/docs/compare/?release=17.11#17.11-575634f97737603c","version":"17.11"},{"db_id":"f2f63cd272a4e4c0c968eacb6779415b","evidence":{"patch_ids":["2470df146b9201b14de19f772c90d867","2de75ceea92e216f0b0f3ec035342d7e","76d1b8b6ad0cee83e43cc4a88d123867"],"same_day":true,"statement_hash":"f6ec51b2de1a066951596511e998a5e51ac29a83e3c8e018df4d6e981ebe7068"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"在此前漏检的场景中检查数据类型的 USAGE 权限","url":"/docs/compare/?release=16.15#16.15-0bb6468faf69c61b","version":"16.15"},{"db_id":"8c93b6ddad829461b98126755a87488f","evidence":{"patch_ids":["2470df146b9201b14de19f772c90d867","2de75ceea92e216f0b0f3ec035342d7e","76d1b8b6ad0cee83e43cc4a88d123867"],"same_day":true,"statement_hash":"f6ec51b2de1a066951596511e998a5e51ac29a83e3c8e018df4d6e981ebe7068"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"在此前漏检的场景中检查数据类型的 USAGE 权限","url":"/docs/compare/?release=15.19#15.19-680192fcb0e07883","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["2470df146b9201b14de19f772c90d867","2de75ceea92e216f0b0f3ec035342d7e","76d1b8b6ad0cee83e43cc4a88d123867"],"same_day":true,"statement_hash":"f6ec51b2de1a066951596511e998a5e51ac29a83e3c8e018df4d6e981ebe7068"},"rule":2,"target":"56232d6e6345f5c09340b72ed581eb4d","type":"equivalent"},{"evidence":{"patch_ids":["2470df146b9201b14de19f772c90d867","2de75ceea92e216f0b0f3ec035342d7e","76d1b8b6ad0cee83e43cc4a88d123867"],"same_day":true,"statement_hash":"f6ec51b2de1a066951596511e998a5e51ac29a83e3c8e018df4d6e981ebe7068"},"rule":2,"target":"8c93b6ddad829461b98126755a87488f","type":"equivalent"},{"evidence":{"patch_ids":["2470df146b9201b14de19f772c90d867","2de75ceea92e216f0b0f3ec035342d7e","76d1b8b6ad0cee83e43cc4a88d123867"],"same_day":true,"statement_hash":"f6ec51b2de1a066951596511e998a5e51ac29a83e3c8e018df4d6e981ebe7068"},"rule":2,"target":"e50027af5564cb33c0ec80ab0f86e1a9","type":"equivalent"},{"evidence":{"patch_ids":["2470df146b9201b14de19f772c90d867","2de75ceea92e216f0b0f3ec035342d7e","76d1b8b6ad0cee83e43cc4a88d123867"],"same_day":true,"statement_hash":"f6ec51b2de1a066951596511e998a5e51ac29a83e3c8e018df4d6e981ebe7068"},"rule":2,"target":"f2f63cd272a4e4c0c968eacb6779415b","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["1a358b8f2","323af0a4e","b6e45b4f8"],"source_entry_id":"14.24/changes/015","source_hash":"a24fc6df5f49969687bf0ef93742ddedcfadc90ebb6b8368f5bd14266b3f1ede","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"f6ec51b2de1a066951596511e998a5e51ac29a83e3c8e018df4d6e981ebe7068","text":"在此前漏检的场景中检查数据类型的 USAGE 权限（Nathan Bossart）§ § § CREATE TYPE AS RANGE、ALTER TABLE OF 以及创建存储表达式的命令此前都没有执行这一检查。这些遗漏使没有 USAGE 权限的角色仍能创建依赖该类型的对象，并可能阻止类型所有者日后更改该类型。 PostgreSQL 项目感谢 Jingzhou Fu 报告此问题。（CVE-2026-6470）","title":"在此前漏检的场景中检查数据类型的 USAGE 权限","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["0b12f56bf","17b6083db","1974acf23","567286b76","f4174aa84","f5f2da795","ffca23839"],"commit_groups":[["0b12f56bf","17b6083db","1974acf23","567286b76","f4174aa84","f5f2da795","ffca23839"]],"commits":["f4174aa84"],"cves":["CVE-2026-14666"],"db_id":"043b1e2a717a3c7862402faa9c4b1f91","html":"\u003cp\u003e\n      角色发生变更后使依赖角色的缓存计划失效（Ilya Staroverov、Shinya Kato、Nathan Bossart）\u003ca href=\"https://postgr.es/c/f4174aa84\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      角色成员关系、角色属性和数据库所有权的变更可能影响行级安全策略的预期行为，但此前系统仍会继续使用按旧状态生成的缓存计划。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Ilya Staroverov 和 Shinya Kato 报告此问题。（CVE-2026-14666）\n     \u003c/p\u003e","id":"14.24-6987bc0045f3c2c5","identity_text":"Invalidate role-dependent cached plans after role changes (Ilya Staroverov, Shinya Kato, Nathan Bossart) Role membership, role attribute, and database ownership changes may impact the expected behavior of row-level security policies, but previously we'd continue to use cached plans that were made according to the old state of affairs. The PostgreSQL Project thanks Ilya Staroverov and Shinya Kato for reporting this problem. (CVE-2026-14666)","part":"changes","patch_ids":["7a5d6580a542a5467ce64bfd9ad2b724"],"related_changes":[{"db_id":"0e200ae2afa3db031ffa07314f2deab2","evidence":{"patch_ids":["7a5d6580a542a5467ce64bfd9ad2b724"],"same_day":true,"statement_hash":"b27f8aace3b388937c6e28c9f1ede652d42059e6b0a2111846c88a4b39769432"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"角色发生变更后使依赖角色的缓存计划失效","url":"/docs/compare/?release=18.6#18.6-ad01030c7fc964f1","version":"18.6"},{"db_id":"49941507efa272e723ff0698b2236a6e","evidence":{"patch_ids":["7a5d6580a542a5467ce64bfd9ad2b724"],"same_day":true,"statement_hash":"b27f8aace3b388937c6e28c9f1ede652d42059e6b0a2111846c88a4b39769432"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"角色发生变更后使依赖角色的缓存计划失效","url":"/docs/compare/?release=17.11#17.11-43977a837123cada","version":"17.11"},{"db_id":"c1425f2f64ac014a0d5ac494fbe66faf","evidence":{"patch_ids":["7a5d6580a542a5467ce64bfd9ad2b724"],"same_day":true,"statement_hash":"b27f8aace3b388937c6e28c9f1ede652d42059e6b0a2111846c88a4b39769432"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"角色发生变更后使依赖角色的缓存计划失效","url":"/docs/compare/?release=16.15#16.15-c1ecfb608aa3193c","version":"16.15"},{"db_id":"652fbbbd4aff8c1d5babff0cde01bc7f","evidence":{"patch_ids":["7a5d6580a542a5467ce64bfd9ad2b724"],"same_day":true,"statement_hash":"b27f8aace3b388937c6e28c9f1ede652d42059e6b0a2111846c88a4b39769432"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"角色发生变更后使依赖角色的缓存计划失效","url":"/docs/compare/?release=15.19#15.19-90c7239f7a1b81bc","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["7a5d6580a542a5467ce64bfd9ad2b724"],"same_day":true,"statement_hash":"b27f8aace3b388937c6e28c9f1ede652d42059e6b0a2111846c88a4b39769432"},"rule":2,"target":"0e200ae2afa3db031ffa07314f2deab2","type":"equivalent"},{"evidence":{"patch_ids":["7a5d6580a542a5467ce64bfd9ad2b724"],"same_day":true,"statement_hash":"b27f8aace3b388937c6e28c9f1ede652d42059e6b0a2111846c88a4b39769432"},"rule":2,"target":"49941507efa272e723ff0698b2236a6e","type":"equivalent"},{"evidence":{"patch_ids":["7a5d6580a542a5467ce64bfd9ad2b724"],"same_day":true,"statement_hash":"b27f8aace3b388937c6e28c9f1ede652d42059e6b0a2111846c88a4b39769432"},"rule":2,"target":"652fbbbd4aff8c1d5babff0cde01bc7f","type":"equivalent"},{"evidence":{"patch_ids":["7a5d6580a542a5467ce64bfd9ad2b724"],"same_day":true,"statement_hash":"b27f8aace3b388937c6e28c9f1ede652d42059e6b0a2111846c88a4b39769432"},"rule":2,"target":"c1425f2f64ac014a0d5ac494fbe66faf","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["f4174aa84"],"source_entry_id":"14.24/changes/016","source_hash":"c350f8676ac89ee59218516e38e85a92a89c30d8ce9249a57c81f0371e652f00","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"b27f8aace3b388937c6e28c9f1ede652d42059e6b0a2111846c88a4b39769432","text":"角色发生变更后使依赖角色的缓存计划失效（Ilya Staroverov、Shinya Kato、Nathan Bossart）§ 角色成员关系、角色属性和数据库所有权的变更可能影响行级安全策略的预期行为，但此前系统仍会继续使用按旧状态生成的缓存计划。 PostgreSQL 项目感谢 Ilya Staroverov 和 Shinya Kato 报告此问题。（CVE-2026-14666）","title":"角色发生变更后使依赖角色的缓存计划失效","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["067a64d40","203a48209","3bf185b4b","bf1bb7e29"],"commit_groups":[["067a64d40","203a48209","3bf185b4b","bf1bb7e29"]],"commits":[],"cves":["CVE-2026-14681"],"db_id":"efca948aece74421d5dff07ca459356e","html":"\u003cp\u003e\n      在直接 SSL 连接之后拒绝 GSSEncRequest（Michael Paquier）\n     \u003c/p\u003e\u003cp\u003e\n      建立 TLS 加密连接后，服务器仍会接受 GSSAPI 加密请求。如果请求成功，连接仍会使用 TLS 加密，但在 \u003ccode\u003epg_hba\u003c/code\u003e 规则看来却像\n      GSS 连接。因此，意图禁止 TLS 的 \u003ccode\u003epg_hba\u003c/code\u003e 策略无法得到正确执行。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      p4p3r 报告此问题。（CVE-2026-14681）\n     \u003c/p\u003e","id":"14.24-f7c6e475d2ee5cf0","identity_text":"Reject GSSEncRequest after direct SSL connection (Michael Paquier) After establishing a TLS-encrypted connection, the server would still accept a request for GSSAPI encryption. If that succeeded, the connection would proceed using TLS encryption, but it would look like a GSS connection to the pg_hba rules. Thus, a pg_hba policy intending to disallow TLS would not be enforced correctly. The PostgreSQL Project thanks p4p3r for reporting this problem. (CVE-2026-14681)","part":"changes","patch_ids":["0a86d0c924c70e8b47408f823a77a964"],"related_changes":[{"db_id":"deae128594614e84894b8e7a7062759f","evidence":{"patch_ids":["0a86d0c924c70e8b47408f823a77a964"],"same_day":true,"statement_hash":"f08040a4f6b5dfe94a4b30090677fd13c199828e108149421fa23eaa60d5f620"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"在直接 SSL 连接之后拒绝 GSSEncRequest","url":"/docs/compare/?release=18.6#18.6-ed40b113af1a65e3","version":"18.6"},{"db_id":"55da165c3ced2d17689a546cd13a10f8","evidence":{"patch_ids":["0a86d0c924c70e8b47408f823a77a964"],"same_day":true,"statement_hash":"f08040a4f6b5dfe94a4b30090677fd13c199828e108149421fa23eaa60d5f620"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"在直接 SSL 连接之后拒绝 GSSEncRequest","url":"/docs/compare/?release=17.11#17.11-1d103f53312d0305","version":"17.11"},{"db_id":"fae551c24851f8412783e17b85987136","evidence":{"patch_ids":["0a86d0c924c70e8b47408f823a77a964"],"same_day":true,"statement_hash":"f08040a4f6b5dfe94a4b30090677fd13c199828e108149421fa23eaa60d5f620"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"在直接 SSL 连接之后拒绝 GSSEncRequest","url":"/docs/compare/?release=16.15#16.15-f7c6e475d2ee5cf0","version":"16.15"},{"db_id":"bdd453999af206604b4ae0c623733bc5","evidence":{"patch_ids":["0a86d0c924c70e8b47408f823a77a964"],"same_day":true,"statement_hash":"f08040a4f6b5dfe94a4b30090677fd13c199828e108149421fa23eaa60d5f620"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"在直接 SSL 连接之后拒绝 GSSEncRequest","url":"/docs/compare/?release=15.19#15.19-f7c6e475d2ee5cf0","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["0a86d0c924c70e8b47408f823a77a964"],"same_day":true,"statement_hash":"f08040a4f6b5dfe94a4b30090677fd13c199828e108149421fa23eaa60d5f620"},"rule":2,"target":"55da165c3ced2d17689a546cd13a10f8","type":"equivalent"},{"evidence":{"patch_ids":["0a86d0c924c70e8b47408f823a77a964"],"same_day":true,"statement_hash":"f08040a4f6b5dfe94a4b30090677fd13c199828e108149421fa23eaa60d5f620"},"rule":2,"target":"bdd453999af206604b4ae0c623733bc5","type":"equivalent"},{"evidence":{"patch_ids":["0a86d0c924c70e8b47408f823a77a964"],"same_day":true,"statement_hash":"f08040a4f6b5dfe94a4b30090677fd13c199828e108149421fa23eaa60d5f620"},"rule":2,"target":"deae128594614e84894b8e7a7062759f","type":"equivalent"},{"evidence":{"patch_ids":["0a86d0c924c70e8b47408f823a77a964"],"same_day":true,"statement_hash":"f08040a4f6b5dfe94a4b30090677fd13c199828e108149421fa23eaa60d5f620"},"rule":2,"target":"fae551c24851f8412783e17b85987136","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["3bf185b4b"],"source_entry_id":"14.24/changes/017","source_hash":"3a80c1fa3c798768f5b8abd7b20fca6ea90342fa6a41d7a0e2a6810188ef6da5","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"f08040a4f6b5dfe94a4b30090677fd13c199828e108149421fa23eaa60d5f620","text":"在直接 SSL 连接之后拒绝 GSSEncRequest（Michael Paquier） 建立 TLS 加密连接后，服务器仍会接受 GSSAPI 加密请求。如果请求成功，连接仍会使用 TLS 加密，但在 pg_hba 规则看来却像 GSS 连接。因此，意图禁止 TLS 的 pg_hba 策略无法得到正确执行。 PostgreSQL 项目感谢 p4p3r 报告此问题。（CVE-2026-14681）","title":"在直接 SSL 连接之后拒绝 GSSEncRequest","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["4d192fa16","822143c4d","dec60e8ad","fadbe882d","feb8b0182"],"commit_groups":[["4d192fa16","822143c4d","dec60e8ad","fadbe882d","feb8b0182"]],"commits":[],"cves":["CVE-2026-14672"],"db_id":"0b4b5a7457f7fbba0ac49362d4205d94","html":"\u003cp\u003e\n      让模拟的 SCRAM secret 更可信（Nathan Bossart）\n     \u003c/p\u003e\u003cp\u003e\n      如果尝试以 SCRAM 登录不存在或没有 SCRAM secret 的角色，系统会生成一个模拟 secret 并照常执行认证握手，以免向攻击者泄露这些事实。但模拟 secret\n      使用固定的迭代次数，这本身可能形成可观察的响应差异。现改用配置设置\n      \u003ccode\u003escram_iterations\u003c/code\u003e，使模拟 secret 更接近该安装中的真实\n      secret。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Radim Marek 报告此问题。（CVE-2026-14672）\n     \u003c/p\u003e","id":"14.24-e106429efa4365f8","identity_text":"Make mock SCRAM authentication secrets more plausible (Nathan Bossart) If a SCRAM login is attempted against a role that doesn't exist or doesn't have a SCRAM secret, we generate a mock secret and carry out the authentication handshake anyway, to avoid revealing these facts to an attacker. But the mock secret was made with a fixed iteration count, which in itself can be an observable response discrepancy. Use the configuration setting scram_iterations instead, to make the mock secret look more like the installation's real secrets. The PostgreSQL Project thanks Radim Marek for reporting this problem. (CVE-2026-14672)","part":"changes","patch_ids":["b915b0f76ef63e3fd030de3a5e4052c7"],"related_changes":[{"db_id":"360618cf2b5023ffb07258f47a407319","evidence":{"patch_ids":["b915b0f76ef63e3fd030de3a5e4052c7"],"same_day":true,"statement_hash":"76daff375fab06e676eed2c7ce655a806a67e546c22e89cce3f2506387c91178"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"让模拟的 SCRAM secret 更可信","url":"/docs/compare/?release=18.6#18.6-bb742148aa1ab70a","version":"18.6"},{"db_id":"465da641b2ad8e32d9b3eff9044cfd21","evidence":{"patch_ids":["b915b0f76ef63e3fd030de3a5e4052c7"],"same_day":true,"statement_hash":"76daff375fab06e676eed2c7ce655a806a67e546c22e89cce3f2506387c91178"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"让模拟的 SCRAM secret 更可信","url":"/docs/compare/?release=17.11#17.11-f319d2c2bdee8718","version":"17.11"},{"db_id":"adc5092861582d88d34f6a1b1124f2eb","evidence":{"patch_ids":["b915b0f76ef63e3fd030de3a5e4052c7"],"same_day":true,"statement_hash":"76daff375fab06e676eed2c7ce655a806a67e546c22e89cce3f2506387c91178"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"让模拟的 SCRAM secret 更可信","url":"/docs/compare/?release=16.15#16.15-7aa6af5006f81e6f","version":"16.15"},{"db_id":"328f985aab0b40a393740fb418be993c","evidence":{"patch_ids":["b915b0f76ef63e3fd030de3a5e4052c7"],"same_day":true,"statement_hash":"76daff375fab06e676eed2c7ce655a806a67e546c22e89cce3f2506387c91178"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"让模拟的 SCRAM secret 更可信","url":"/docs/compare/?release=15.19#15.19-e106429efa4365f8","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["b915b0f76ef63e3fd030de3a5e4052c7"],"same_day":true,"statement_hash":"76daff375fab06e676eed2c7ce655a806a67e546c22e89cce3f2506387c91178"},"rule":2,"target":"328f985aab0b40a393740fb418be993c","type":"equivalent"},{"evidence":{"patch_ids":["b915b0f76ef63e3fd030de3a5e4052c7"],"same_day":true,"statement_hash":"76daff375fab06e676eed2c7ce655a806a67e546c22e89cce3f2506387c91178"},"rule":2,"target":"360618cf2b5023ffb07258f47a407319","type":"equivalent"},{"evidence":{"patch_ids":["b915b0f76ef63e3fd030de3a5e4052c7"],"same_day":true,"statement_hash":"76daff375fab06e676eed2c7ce655a806a67e546c22e89cce3f2506387c91178"},"rule":2,"target":"465da641b2ad8e32d9b3eff9044cfd21","type":"equivalent"},{"evidence":{"patch_ids":["b915b0f76ef63e3fd030de3a5e4052c7"],"same_day":true,"statement_hash":"76daff375fab06e676eed2c7ce655a806a67e546c22e89cce3f2506387c91178"},"rule":2,"target":"adc5092861582d88d34f6a1b1124f2eb","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["feb8b0182"],"source_entry_id":"14.24/changes/018","source_hash":"d0c81caf9258f573ce2f4e7731092b834e1f313b15c20bca1ee76e5450a7f508","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"76daff375fab06e676eed2c7ce655a806a67e546c22e89cce3f2506387c91178","text":"让模拟的 SCRAM secret 更可信（Nathan Bossart） 如果尝试以 SCRAM 登录不存在或没有 SCRAM secret 的角色，系统会生成一个模拟 secret 并照常执行认证握手，以免向攻击者泄露这些事实。但模拟 secret 使用固定的迭代次数，这本身可能形成可观察的响应差异。现改用配置设置 scram_iterations，使模拟 secret 更接近该安装中的真实 secret。 PostgreSQL 项目感谢 Radim Marek 报告此问题。（CVE-2026-14672）","title":"让模拟的 SCRAM secret 更可信","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["39f855e0e","457b8737a","5737110b6","74c59d062","a14ba29b1","c3c830272","c7da85fec"],"commit_groups":[["39f855e0e","457b8737a","5737110b6","74c59d062","a14ba29b1","c3c830272","c7da85fec"]],"commits":["74c59d062"],"cves":["CVE-2026-16241"],"db_id":"7393e9b24b9abe3400e3f04577d58cba","html":"\u003cp\u003e\n      修复 \u003cspan\u003eecpg\u003c/span\u003e 应用程序因接收服务器返回的无效\n      \u003ccode\u003ebytea\u003c/code\u003e 数据而发生的越界写入（Michael Paquier）\u003ca href=\"https://postgr.es/c/74c59d062\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n\u003cspan\u003eecpg\u003c/span\u003e 未经检查便假定任何 \u003ccode\u003ebytea\u003c/code\u003e 值都必须以 \u003ccode\u003e\\x\u003c/code\u003e 开头。有缺陷或恶意的服务器可能发送短于 2 字节的字符串，从而破坏应用程序内存。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      ylwangtju 报告此问题。（CVE-2026-16241）\n     \u003c/p\u003e","id":"14.24-a12e893b89f31441","identity_text":"Fix out-of-bounds writes in ecpg applications caused by invalid bytea data received from the server (Michael Paquier) ecpg assumed without checking that any bytea value must begin with \\x. A broken or malicious server might send a string shorter than 2 bytes, resulting in memory clobber in the application. The PostgreSQL Project thanks ylwangtju for reporting this problem. (CVE-2026-16241)","part":"changes","patch_ids":["eda4e515c03b7210bd33a13cc191c754"],"related_changes":[{"db_id":"c7e226410c72dad9c39b76d880e2f2a5","evidence":{"patch_ids":["eda4e515c03b7210bd33a13cc191c754"],"same_day":true,"statement_hash":"ef3db74c8b626f19d33ecc7d3b8e292c1e11cd1089b59edbc38f72bd729fe946"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 ecpg 应用程序因接收服务器返回的无效 bytea 数据而发生的越界写入","url":"/docs/compare/?release=18.6#18.6-2d9ddb6163eca29a","version":"18.6"},{"db_id":"4fb7c5910a0436ce3e2bb2ab88b25a87","evidence":{"patch_ids":["eda4e515c03b7210bd33a13cc191c754"],"same_day":true,"statement_hash":"ef3db74c8b626f19d33ecc7d3b8e292c1e11cd1089b59edbc38f72bd729fe946"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 ecpg 应用程序因接收服务器返回的无效 bytea 数据而发生的越界写入","url":"/docs/compare/?release=17.11#17.11-368d04431d80a7fd","version":"17.11"},{"db_id":"f5473f236236eb170503879999034ecc","evidence":{"patch_ids":["eda4e515c03b7210bd33a13cc191c754"],"same_day":true,"statement_hash":"ef3db74c8b626f19d33ecc7d3b8e292c1e11cd1089b59edbc38f72bd729fe946"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 ecpg 应用程序因接收服务器返回的无效 bytea 数据而发生的越界写入","url":"/docs/compare/?release=16.15#16.15-e48a8391a0609721","version":"16.15"},{"db_id":"18aec69fea13406451ddcbd0d4c23a88","evidence":{"patch_ids":["eda4e515c03b7210bd33a13cc191c754"],"same_day":true,"statement_hash":"ef3db74c8b626f19d33ecc7d3b8e292c1e11cd1089b59edbc38f72bd729fe946"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 ecpg 应用程序因接收服务器返回的无效 bytea 数据而发生的越界写入","url":"/docs/compare/?release=15.19#15.19-8ab80940f2e8c31e","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["eda4e515c03b7210bd33a13cc191c754"],"same_day":true,"statement_hash":"ef3db74c8b626f19d33ecc7d3b8e292c1e11cd1089b59edbc38f72bd729fe946"},"rule":2,"target":"18aec69fea13406451ddcbd0d4c23a88","type":"equivalent"},{"evidence":{"patch_ids":["eda4e515c03b7210bd33a13cc191c754"],"same_day":true,"statement_hash":"ef3db74c8b626f19d33ecc7d3b8e292c1e11cd1089b59edbc38f72bd729fe946"},"rule":2,"target":"4fb7c5910a0436ce3e2bb2ab88b25a87","type":"equivalent"},{"evidence":{"patch_ids":["eda4e515c03b7210bd33a13cc191c754"],"same_day":true,"statement_hash":"ef3db74c8b626f19d33ecc7d3b8e292c1e11cd1089b59edbc38f72bd729fe946"},"rule":2,"target":"c7e226410c72dad9c39b76d880e2f2a5","type":"equivalent"},{"evidence":{"patch_ids":["eda4e515c03b7210bd33a13cc191c754"],"same_day":true,"statement_hash":"ef3db74c8b626f19d33ecc7d3b8e292c1e11cd1089b59edbc38f72bd729fe946"},"rule":2,"target":"f5473f236236eb170503879999034ecc","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["74c59d062"],"source_entry_id":"14.24/changes/019","source_hash":"6f21dd9f97e88a0dd52280bef32f4565ccac9842aa761a2eda3b2de80c49bf09","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"ef3db74c8b626f19d33ecc7d3b8e292c1e11cd1089b59edbc38f72bd729fe946","text":"修复 ecpg 应用程序因接收服务器返回的无效 bytea 数据而发生的越界写入（Michael Paquier）§ ecpg 未经检查便假定任何 bytea 值都必须以 \\x 开头。有缺陷或恶意的服务器可能发送短于 2 字节的字符串，从而破坏应用程序内存。 PostgreSQL 项目感谢 ylwangtju 报告此问题。（CVE-2026-16241）","title":"修复 ecpg 应用程序因接收服务器返回的无效 bytea 数据而发生的越界写入","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["0119aa30e","086f6f176","0bfac9e1f","2006fca40","33d0c63fb","71ca694c7","df245c374"],"commit_groups":[["0119aa30e","086f6f176","0bfac9e1f","2006fca40","33d0c63fb","71ca694c7","df245c374"]],"commits":["2006fca40"],"cves":["CVE-2025-8714","CVE-2026-18408"],"db_id":"49dd1006826cb5f529df97b64194c139","html":"\u003cp\u003e\n      不要对 \u003cspan\u003epsql\u003c/span\u003e 的 \u003ccode\u003e\\unrestrict\u003c/code\u003e\n      命令参数执行反引号扩展（Nathan Bossart）\u003ca href=\"https://postgr.es/c/2006fca40\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      CVE-2025-8714 修复中的这一疏漏，使恶意服务器能够把 shell 命令注入纯文本转储输出，并在恢复时于运行 \u003cspan\u003epsql\u003c/span\u003e 的机器上执行；这正是 CVE-2025-8714 意图防止的场景。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Lucas Velgus、Filip Janus 和 Daniel Bakker 报告此问题。（CVE-2026-18408）\n     \u003c/p\u003e","id":"14.24-383244a3d19a3ddf","identity_text":"Do not do backquote expansion on the argument of psql's \\unrestrict command (Nathan Bossart) This oversight in the fix for CVE-2025-8714 allows a malicious server to inject shell commands into plain-text dump output that will be run at restore time on the machine running psql, the exact scenario that CVE-2025-8714 intended to prevent. The PostgreSQL Project thanks Lucas Velgus, Filip Janus, and Daniel Bakker for reporting this problem. (CVE-2026-18408)","part":"changes","patch_ids":["061af71132ccdfb4f1bbeed893be595c"],"related_changes":[{"db_id":"36ccc2b6f4b04376dc6bf74ae3d2f6de","evidence":{"patch_ids":["061af71132ccdfb4f1bbeed893be595c"],"same_day":true,"statement_hash":"3a14df9ccfd7372d3dac771a23f52e41c3376ea71cf1946e2c9e95f97d2b5d3b"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"不要对 psql 的 \\unrestrict 命令参数执行反引号扩展","url":"/docs/compare/?release=18.6#18.6-2227ccac7ef5135c","version":"18.6"},{"db_id":"56ffc2f53e9a050b5de71327d3cef06f","evidence":{"patch_ids":["061af71132ccdfb4f1bbeed893be595c"],"same_day":true,"statement_hash":"3a14df9ccfd7372d3dac771a23f52e41c3376ea71cf1946e2c9e95f97d2b5d3b"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"不要对 psql 的 \\unrestrict 命令参数执行反引号扩展","url":"/docs/compare/?release=17.11#17.11-7f417b32587acff8","version":"17.11"},{"db_id":"7a747536f32a440151dcb2b04ac4e968","evidence":{"patch_ids":["061af71132ccdfb4f1bbeed893be595c"],"same_day":true,"statement_hash":"3a14df9ccfd7372d3dac771a23f52e41c3376ea71cf1946e2c9e95f97d2b5d3b"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"不要对 psql 的 \\unrestrict 命令参数执行反引号扩展","url":"/docs/compare/?release=16.15#16.15-59649e9a46bbab2a","version":"16.15"},{"db_id":"5221242491685338de78e8922e1f353a","evidence":{"patch_ids":["061af71132ccdfb4f1bbeed893be595c"],"same_day":true,"statement_hash":"3a14df9ccfd7372d3dac771a23f52e41c3376ea71cf1946e2c9e95f97d2b5d3b"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"不要对 psql 的 \\unrestrict 命令参数执行反引号扩展","url":"/docs/compare/?release=15.19#15.19-1eaa89bc0932599c","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["061af71132ccdfb4f1bbeed893be595c"],"same_day":true,"statement_hash":"3a14df9ccfd7372d3dac771a23f52e41c3376ea71cf1946e2c9e95f97d2b5d3b"},"rule":2,"target":"36ccc2b6f4b04376dc6bf74ae3d2f6de","type":"equivalent"},{"evidence":{"patch_ids":["061af71132ccdfb4f1bbeed893be595c"],"same_day":true,"statement_hash":"3a14df9ccfd7372d3dac771a23f52e41c3376ea71cf1946e2c9e95f97d2b5d3b"},"rule":2,"target":"5221242491685338de78e8922e1f353a","type":"equivalent"},{"evidence":{"patch_ids":["061af71132ccdfb4f1bbeed893be595c"],"same_day":true,"statement_hash":"3a14df9ccfd7372d3dac771a23f52e41c3376ea71cf1946e2c9e95f97d2b5d3b"},"rule":2,"target":"56ffc2f53e9a050b5de71327d3cef06f","type":"equivalent"},{"evidence":{"patch_ids":["061af71132ccdfb4f1bbeed893be595c"],"same_day":true,"statement_hash":"3a14df9ccfd7372d3dac771a23f52e41c3376ea71cf1946e2c9e95f97d2b5d3b"},"rule":2,"target":"7a747536f32a440151dcb2b04ac4e968","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["2006fca40"],"source_entry_id":"14.24/changes/020","source_hash":"d94729affaf4e2125fdcaa7e88bf896c5c5f4b6d5d8b5d0a2ef675d1d4761285","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"3a14df9ccfd7372d3dac771a23f52e41c3376ea71cf1946e2c9e95f97d2b5d3b","text":"不要对 psql 的 \\unrestrict 命令参数执行反引号扩展（Nathan Bossart）§ CVE-2025-8714 修复中的这一疏漏，使恶意服务器能够把 shell 命令注入纯文本转储输出，并在恢复时于运行 psql 的机器上执行；这正是 CVE-2025-8714 意图防止的场景。 PostgreSQL 项目感谢 Lucas Velgus、Filip Janus 和 Daniel Bakker 报告此问题。（CVE-2026-18408）","title":"不要对 psql 的 \\unrestrict 命令参数执行反引号扩展","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["13bb73aeb","3299c2ba0","3392cce5c","57aa21f69","71ba5705d","86cd82bf4","c2b16f5d4"],"commit_groups":[["13bb73aeb","3299c2ba0","3392cce5c","57aa21f69","71ba5705d","86cd82bf4","c2b16f5d4"]],"commits":["57aa21f69"],"cves":["CVE-2026-19385"],"db_id":"6a0f92cad4fbbfe88adb2be733310a9b","html":"\u003cp\u003e\n      移除 \u003cspan\u003epg_dump\u003c/span\u003e 关于\n      \u003ccode\u003epg_proc\u003c/code\u003e.\u003ccode\u003eprotrftypes\u003c/code\u003e\n      不可能包含超过 \u003ccode\u003eFUNC_MAX_ARGS\u003c/code\u003e 个条目的假设（Tom Lane）\u003ca href=\"https://postgr.es/c/57aa21f69\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      由于该数组可能同时包含输入和输出参数的条目，其长度完全可能超过\n      \u003ccode\u003eFUNC_MAX_ARGS\u003c/code\u003e（该值只限制输入参数）。即使并非如此，\u003cspan\u003epg_dump\u003c/span\u003e 也不能假定服务器构建时使用的\n      \u003ccode\u003eFUNC_MAX_ARGS\u003c/code\u003e 值与自身相同。越界写入会导致\n      \u003cspan\u003epg_dump\u003c/span\u003e 内部的内存被破坏。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Masahiko Sawada 报告此问题。（CVE-2026-19385）\n     \u003c/p\u003e","id":"14.24-f37e6003b995c6db","identity_text":"Remove pg_dump's assumption that pg_proc.protrftypes cannot have more than FUNC_MAX_ARGS entries (Tom Lane) Since there could be entries for both input and output arguments, it's feasible for this array's length to exceed FUNC_MAX_ARGS (which constrains only input arguments). Even if that were not so, pg_dump cannot assume that the server was built with the same value of FUNC_MAX_ARGS that it has. An overrun would lead to a memory clobber inside pg_dump. The PostgreSQL Project thanks Masahiko Sawada for reporting this problem. (CVE-2026-19385)","part":"changes","patch_ids":["185500373cc27d3d610be991561eb522"],"related_changes":[{"db_id":"f91d32a8c03492afba6d7ba835690a32","evidence":{"patch_ids":["185500373cc27d3d610be991561eb522"],"same_day":true,"statement_hash":"0503fb690855a4bf21f955b8b62af71583c422a4e69c4c228faea1f3e3f8b84b"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"移除 pg_dump 关于 pg_proc.protrftypes 不可能包含超过 FUNC_MAX_ARGS 个条目的假设","url":"/docs/compare/?release=18.6#18.6-d40f8de8e21a4c6f","version":"18.6"},{"db_id":"63fc39b2fe0a2553fb195650ae6915cb","evidence":{"patch_ids":["185500373cc27d3d610be991561eb522"],"same_day":true,"statement_hash":"0503fb690855a4bf21f955b8b62af71583c422a4e69c4c228faea1f3e3f8b84b"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"移除 pg_dump 关于 pg_proc.protrftypes 不可能包含超过 FUNC_MAX_ARGS 个条目的假设","url":"/docs/compare/?release=17.11#17.11-f6aaa44b60ea5479","version":"17.11"},{"db_id":"dce6c62e738d4e4801ee4cb45757968f","evidence":{"patch_ids":["185500373cc27d3d610be991561eb522"],"same_day":true,"statement_hash":"0503fb690855a4bf21f955b8b62af71583c422a4e69c4c228faea1f3e3f8b84b"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"移除 pg_dump 关于 pg_proc.protrftypes 不可能包含超过 FUNC_MAX_ARGS 个条目的假设","url":"/docs/compare/?release=16.15#16.15-d0330343bf3a2bca","version":"16.15"},{"db_id":"5183659937548a24721c52721ce5656b","evidence":{"patch_ids":["185500373cc27d3d610be991561eb522"],"same_day":true,"statement_hash":"0503fb690855a4bf21f955b8b62af71583c422a4e69c4c228faea1f3e3f8b84b"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"移除 pg_dump 关于 pg_proc.protrftypes 不可能包含超过 FUNC_MAX_ARGS 个条目的假设","url":"/docs/compare/?release=15.19#15.19-fa846de81d1d3c18","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["185500373cc27d3d610be991561eb522"],"same_day":true,"statement_hash":"0503fb690855a4bf21f955b8b62af71583c422a4e69c4c228faea1f3e3f8b84b"},"rule":2,"target":"5183659937548a24721c52721ce5656b","type":"equivalent"},{"evidence":{"patch_ids":["185500373cc27d3d610be991561eb522"],"same_day":true,"statement_hash":"0503fb690855a4bf21f955b8b62af71583c422a4e69c4c228faea1f3e3f8b84b"},"rule":2,"target":"63fc39b2fe0a2553fb195650ae6915cb","type":"equivalent"},{"evidence":{"patch_ids":["185500373cc27d3d610be991561eb522"],"same_day":true,"statement_hash":"0503fb690855a4bf21f955b8b62af71583c422a4e69c4c228faea1f3e3f8b84b"},"rule":2,"target":"dce6c62e738d4e4801ee4cb45757968f","type":"equivalent"},{"evidence":{"patch_ids":["185500373cc27d3d610be991561eb522"],"same_day":true,"statement_hash":"0503fb690855a4bf21f955b8b62af71583c422a4e69c4c228faea1f3e3f8b84b"},"rule":2,"target":"f91d32a8c03492afba6d7ba835690a32","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["57aa21f69"],"source_entry_id":"14.24/changes/021","source_hash":"ffe758f9aaf798dd1b77858a57cafd6a48639cc6873c51608a2462fa716abbb1","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"0503fb690855a4bf21f955b8b62af71583c422a4e69c4c228faea1f3e3f8b84b","text":"移除 pg_dump 关于 pg_proc.protrftypes 不可能包含超过 FUNC_MAX_ARGS 个条目的假设（Tom Lane）§ 由于该数组可能同时包含输入和输出参数的条目，其长度完全可能超过 FUNC_MAX_ARGS（该值只限制输入参数）。即使并非如此，pg_dump 也不能假定服务器构建时使用的 FUNC_MAX_ARGS 值与自身相同。越界写入会导致 pg_dump 内部的内存被破坏。 PostgreSQL 项目感谢 Masahiko Sawada 报告此问题。（CVE-2026-19385）","title":"移除 pg_dump 关于 pg_proc.protrftypes 不可能包含超过 FUNC_MAX_ARGS 个条目的假设","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["2d78c34f8","477a6bdb0","63cb15f40","87c4b8219","8c48cd615","cf4ae7c3b","d7fcfead3"],"commit_groups":[["2d78c34f8","477a6bdb0","63cb15f40","87c4b8219","8c48cd615","cf4ae7c3b","d7fcfead3"]],"commits":["d7fcfead3"],"cves":["CVE-2026-14670"],"db_id":"f0c1fefb4fd60b97ad1a6420db84a85a","html":"\u003cp\u003e\n      增强 \u003cspan\u003ePL/Perl\u003c/span\u003e 对\u003cspan\u003e“\u003cspan\u003etied\u003c/span\u003e”\u003c/span\u003e Perl\n      数组和 hash 的防护（Tom Lane）\u003ca href=\"https://postgr.es/c/d7fcfead3\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      行为不符合常规的 tied 对象可能导致内存覆盖，或构造出损坏的结果数组（这很可能在之后引发问题）。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Hcamael 报告此问题。（CVE-2026-14670）\n     \u003c/p\u003e","id":"14.24-00b84c1b83bd3d6b","identity_text":"Harden PL/Perl against tied Perl arrays and hashes (Tom Lane) A tied object that doesn't behave like a regular one could lead to memory overwrite, or to constructing a corrupt result array (which would likely cause problems later). The PostgreSQL Project thanks Hcamael for reporting this problem. (CVE-2026-14670)","part":"changes","patch_ids":["5749c355b8bd5a5f2a0f8679d48902f9"],"related_changes":[{"db_id":"45822fd5bc04f9bc7cd5310ebd922c61","evidence":{"patch_ids":["5749c355b8bd5a5f2a0f8679d48902f9"],"same_day":true,"statement_hash":"e681b36f925829491afb4aaf1536bea68f7b5021f6e0ea3fdb126ffd69367fa0"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"增强 PL/Perl 对 “tied” Perl 数组和 hash 的防护","url":"/docs/compare/?release=18.6#18.6-6d183d795dd4fadd","version":"18.6"},{"db_id":"59a40e9cc2306d6e115d10b26c7b6d9e","evidence":{"patch_ids":["5749c355b8bd5a5f2a0f8679d48902f9"],"same_day":true,"statement_hash":"e681b36f925829491afb4aaf1536bea68f7b5021f6e0ea3fdb126ffd69367fa0"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"增强 PL/Perl 对 “tied” Perl 数组和 hash 的防护","url":"/docs/compare/?release=17.11#17.11-58243a045a5d2555","version":"17.11"},{"db_id":"0caaa5502645631a657b97dc78add8c0","evidence":{"patch_ids":["5749c355b8bd5a5f2a0f8679d48902f9"],"same_day":true,"statement_hash":"e681b36f925829491afb4aaf1536bea68f7b5021f6e0ea3fdb126ffd69367fa0"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"增强 PL/Perl 对 “tied” Perl 数组和 hash 的防护","url":"/docs/compare/?release=16.15#16.15-9465542088e662ad","version":"16.15"},{"db_id":"bd87bdc33bbf3c2a24631a385372b6ad","evidence":{"patch_ids":["5749c355b8bd5a5f2a0f8679d48902f9"],"same_day":true,"statement_hash":"e681b36f925829491afb4aaf1536bea68f7b5021f6e0ea3fdb126ffd69367fa0"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"增强 PL/Perl 对“tied” Perl 数组和 hash 的防护","url":"/docs/compare/?release=15.19#15.19-31838acd743ddb41","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["5749c355b8bd5a5f2a0f8679d48902f9"],"same_day":true,"statement_hash":"e681b36f925829491afb4aaf1536bea68f7b5021f6e0ea3fdb126ffd69367fa0"},"rule":2,"target":"0caaa5502645631a657b97dc78add8c0","type":"equivalent"},{"evidence":{"patch_ids":["5749c355b8bd5a5f2a0f8679d48902f9"],"same_day":true,"statement_hash":"e681b36f925829491afb4aaf1536bea68f7b5021f6e0ea3fdb126ffd69367fa0"},"rule":2,"target":"45822fd5bc04f9bc7cd5310ebd922c61","type":"equivalent"},{"evidence":{"patch_ids":["5749c355b8bd5a5f2a0f8679d48902f9"],"same_day":true,"statement_hash":"e681b36f925829491afb4aaf1536bea68f7b5021f6e0ea3fdb126ffd69367fa0"},"rule":2,"target":"59a40e9cc2306d6e115d10b26c7b6d9e","type":"equivalent"},{"evidence":{"patch_ids":["5749c355b8bd5a5f2a0f8679d48902f9"],"same_day":true,"statement_hash":"e681b36f925829491afb4aaf1536bea68f7b5021f6e0ea3fdb126ffd69367fa0"},"rule":2,"target":"bd87bdc33bbf3c2a24631a385372b6ad","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["d7fcfead3"],"source_entry_id":"14.24/changes/022","source_hash":"da4742d77210b1c3a6151d952ad03140594c7159acafc2843f26f0dfed30483d","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"e681b36f925829491afb4aaf1536bea68f7b5021f6e0ea3fdb126ffd69367fa0","text":"增强 PL/Perl 对“tied” Perl 数组和 hash 的防护（Tom Lane）§ 行为不符合常规的 tied 对象可能导致内存覆盖，或构造出损坏的结果数组（这很可能在之后引发问题）。 PostgreSQL 项目感谢 Hcamael 报告此问题。（CVE-2026-14670）","title":"增强 PL/Perl 对“tied” Perl 数组和 hash 的防护","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["028ee716a","1eb0d5380","776467301","8bbdc0540","a1c1727cb","aff9dac1c","b56cc7deb"],"commit_groups":[["028ee716a","1eb0d5380","776467301","8bbdc0540","a1c1727cb","aff9dac1c","b56cc7deb"]],"commits":["aff9dac1c"],"cves":["CVE-2026-14677","CVE-2026-6473"],"db_id":"eaeb89e4752f46002fc91e3a83e9f683","html":"\u003cp\u003e\n      修复 \u003cspan\u003ePL/Perl\u003c/span\u003e 和 \u003cspan\u003ePL/Tcl\u003c/span\u003e\n      内存分配计算中的整数溢出（Heikki Linnakangas）\u003ca href=\"https://postgr.es/c/aff9dac1c\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      该问题与 CVE-2026-6473 属于同一类型，只是出现在代码的不同部分，并采用相同方式修复。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Tulya Project（Team Dhiutsa、Bitecope Technologies Private Ltd）报告此问题。（CVE-2026-14677）\n     \u003c/p\u003e","id":"14.24-cbf179d0fe218ed0","identity_text":"Fix integer overflows in memory-allocation calculations in PL/Perl and PL/Tcl (Heikki Linnakangas) This is the same type of problem as CVE-2026-6473, just in a different part of the code, and is fixed in the same way. The PostgreSQL Project thanks the Tulya Project (Team Dhiutsa, Bitecope Technologies Private Ltd) for reporting this problem. (CVE-2026-14677)","part":"changes","patch_ids":["551a41f04d69f180135194c24f4907fb"],"related_changes":[{"db_id":"238a2ce678961ff0ad08154da3915f04","evidence":{"patch_ids":["551a41f04d69f180135194c24f4907fb"],"same_day":true,"statement_hash":"b56f55f83d652a2d7354185c8891454536092c27a727aecc0b21ea91949626f4"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 PL/Perl 和 PL/Tcl 内存分配计算中的整数溢出","url":"/docs/compare/?release=18.6#18.6-16cede7597f41368","version":"18.6"},{"db_id":"a110c06ad7fd7a9c4f063b051daf6836","evidence":{"patch_ids":["551a41f04d69f180135194c24f4907fb"],"same_day":true,"statement_hash":"b56f55f83d652a2d7354185c8891454536092c27a727aecc0b21ea91949626f4"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 PL/Perl 和 PL/Tcl 内存分配计算中的整数溢出","url":"/docs/compare/?release=17.11#17.11-7026dc1b76714418","version":"17.11"},{"db_id":"f5ff50e89bc960e1e5bac3249477b995","evidence":{"patch_ids":["551a41f04d69f180135194c24f4907fb"],"same_day":true,"statement_hash":"b56f55f83d652a2d7354185c8891454536092c27a727aecc0b21ea91949626f4"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 PL/Perl 和 PL/Tcl 内存分配计算中的整数溢出","url":"/docs/compare/?release=16.15#16.15-342fcd712e0eba5c","version":"16.15"},{"db_id":"4cc223998ff4d5b7cf50efd21e2284b1","evidence":{"patch_ids":["551a41f04d69f180135194c24f4907fb"],"same_day":true,"statement_hash":"b56f55f83d652a2d7354185c8891454536092c27a727aecc0b21ea91949626f4"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 PL/Perl 和 PL/Tcl 内存分配计算中的整数溢出","url":"/docs/compare/?release=15.19#15.19-d03175b8e62ca77d","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["551a41f04d69f180135194c24f4907fb"],"same_day":true,"statement_hash":"b56f55f83d652a2d7354185c8891454536092c27a727aecc0b21ea91949626f4"},"rule":2,"target":"238a2ce678961ff0ad08154da3915f04","type":"equivalent"},{"evidence":{"patch_ids":["551a41f04d69f180135194c24f4907fb"],"same_day":true,"statement_hash":"b56f55f83d652a2d7354185c8891454536092c27a727aecc0b21ea91949626f4"},"rule":2,"target":"4cc223998ff4d5b7cf50efd21e2284b1","type":"equivalent"},{"evidence":{"patch_ids":["551a41f04d69f180135194c24f4907fb"],"same_day":true,"statement_hash":"b56f55f83d652a2d7354185c8891454536092c27a727aecc0b21ea91949626f4"},"rule":2,"target":"a110c06ad7fd7a9c4f063b051daf6836","type":"equivalent"},{"evidence":{"patch_ids":["551a41f04d69f180135194c24f4907fb"],"same_day":true,"statement_hash":"b56f55f83d652a2d7354185c8891454536092c27a727aecc0b21ea91949626f4"},"rule":2,"target":"f5ff50e89bc960e1e5bac3249477b995","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["aff9dac1c"],"source_entry_id":"14.24/changes/023","source_hash":"5252fdd0c84fe72fa35dc83bb73f04308ec166f883665a121e642d44363e800e","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"b56f55f83d652a2d7354185c8891454536092c27a727aecc0b21ea91949626f4","text":"修复 PL/Perl 和 PL/Tcl 内存分配计算中的整数溢出（Heikki Linnakangas）§ 该问题与 CVE-2026-6473 属于同一类型，只是出现在代码的不同部分，并采用相同方式修复。 PostgreSQL 项目感谢 Tulya Project（Team Dhiutsa、Bitecope Technologies Private Ltd）报告此问题。（CVE-2026-14677）","title":"修复 PL/Perl 和 PL/Tcl 内存分配计算中的整数溢出","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["0a61fcde0","0fbf785b1","2cc147318","39d792040","557cc7186","e41c72aff","e43e74756"],"commit_groups":[["0a61fcde0","0fbf785b1","2cc147318","39d792040","557cc7186","e41c72aff","e43e74756"]],"commits":["39d792040"],"cves":["CVE-2026-14673"],"db_id":"9ef4dc62946cbc0407d82f3a9b826f0e","html":"\u003cp\u003e\n      确保 \u003ccode\u003econtrib/amcheck\u003c/code\u003e 函数在执行索引表达式前限制\n      \u003ccode\u003esearch_path\u003c/code\u003e（Noah Misch）\u003ca href=\"https://postgr.es/c/39d792040\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      由于 amcheck 会以相关表所有者的身份运行这些索引表达式，调用者可能劫持依赖 \u003ccode\u003esearch_path\u003c/code\u003e 的函数，以表所有者身份运行任意代码。默认情况下这并非漏洞，因为只有超级用户可以调用 amcheck 函数；但如果将该权限授予其他用户，造成的风险会比文档所述更大。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Yuelin Wang 和 Jacob Brazeal 报告此问题。（CVE-2026-14673）\n     \u003c/p\u003e","id":"14.24-e234967475d09d13","identity_text":"Ensure that contrib/amcheck functions restrict search_path before executing index expressions (Noah Misch) Because amcheck will run such index expressions as the owner of their tables, a caller could potentially hijack search_path-dependent functions to run arbitrary code as the table owner. By default this is not a vulnerability because only superusers are allowed to call amcheck functions; but if that privilege was granted out, it created a larger hazard than the documentation suggests. The PostgreSQL Project thanks Yuelin Wang and Jacob Brazeal for reporting this problem. (CVE-2026-14673)","part":"changes","patch_ids":["5c909624ee89c6ad2350bdeebaf3e414"],"related_changes":[{"db_id":"cb5c4637df879fb88877a760ee0058f9","evidence":{"patch_ids":["5c909624ee89c6ad2350bdeebaf3e414"],"same_day":true,"statement_hash":"659077ecd2d4227788959afddf19d4e415449e3189a19ba0beb867937958bff6"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"确保 contrib/amcheck 函数在执行索引表达式前限制 search_path","url":"/docs/compare/?release=18.6#18.6-64ea1ee53902ffcc","version":"18.6"},{"db_id":"2c238928eeda3326738ac133c3580936","evidence":{"patch_ids":["5c909624ee89c6ad2350bdeebaf3e414"],"same_day":true,"statement_hash":"659077ecd2d4227788959afddf19d4e415449e3189a19ba0beb867937958bff6"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"确保 contrib/amcheck 函数在执行索引表达式前限制 search_path","url":"/docs/compare/?release=17.11#17.11-ee34ba8ba8f4fa3d","version":"17.11"},{"db_id":"465e8cabac386aa937b2b97c990e0a0f","evidence":{"patch_ids":["5c909624ee89c6ad2350bdeebaf3e414"],"same_day":true,"statement_hash":"659077ecd2d4227788959afddf19d4e415449e3189a19ba0beb867937958bff6"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"确保 contrib/amcheck 函数在执行索引表达式前限制 search_path","url":"/docs/compare/?release=16.15#16.15-20c54db9d1517bb1","version":"16.15"},{"db_id":"c016d6a0f320dafa02d0585b20842685","evidence":{"patch_ids":["5c909624ee89c6ad2350bdeebaf3e414"],"same_day":true,"statement_hash":"659077ecd2d4227788959afddf19d4e415449e3189a19ba0beb867937958bff6"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"确保 contrib/amcheck 函数在执行索引表达式前限制 search_path","url":"/docs/compare/?release=15.19#15.19-ab72faa7677e5388","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["5c909624ee89c6ad2350bdeebaf3e414"],"same_day":true,"statement_hash":"659077ecd2d4227788959afddf19d4e415449e3189a19ba0beb867937958bff6"},"rule":2,"target":"2c238928eeda3326738ac133c3580936","type":"equivalent"},{"evidence":{"patch_ids":["5c909624ee89c6ad2350bdeebaf3e414"],"same_day":true,"statement_hash":"659077ecd2d4227788959afddf19d4e415449e3189a19ba0beb867937958bff6"},"rule":2,"target":"465e8cabac386aa937b2b97c990e0a0f","type":"equivalent"},{"evidence":{"patch_ids":["5c909624ee89c6ad2350bdeebaf3e414"],"same_day":true,"statement_hash":"659077ecd2d4227788959afddf19d4e415449e3189a19ba0beb867937958bff6"},"rule":2,"target":"c016d6a0f320dafa02d0585b20842685","type":"equivalent"},{"evidence":{"patch_ids":["5c909624ee89c6ad2350bdeebaf3e414"],"same_day":true,"statement_hash":"659077ecd2d4227788959afddf19d4e415449e3189a19ba0beb867937958bff6"},"rule":2,"target":"cb5c4637df879fb88877a760ee0058f9","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["39d792040"],"source_entry_id":"14.24/changes/024","source_hash":"a37cde6bcc0d082272bff2928b49894173ee4bdd4d3af23764d24510fc08a592","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"659077ecd2d4227788959afddf19d4e415449e3189a19ba0beb867937958bff6","text":"确保 contrib/amcheck 函数在执行索引表达式前限制 search_path（Noah Misch）§ 由于 amcheck 会以相关表所有者的身份运行这些索引表达式，调用者可能劫持依赖 search_path 的函数，以表所有者身份运行任意代码。默认情况下这并非漏洞，因为只有超级用户可以调用 amcheck 函数；但如果将该权限授予其他用户，造成的风险会比文档所述更大。 PostgreSQL 项目感谢 Yuelin Wang 和 Jacob Brazeal 报告此问题。（CVE-2026-14673）","title":"确保 contrib/amcheck 函数在执行索引表达式前限制 search_path","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["61481aa0e","62c31b490","74916136f","918683d12","9505175f2","c4d51b627","e88eb4e76"],"commit_groups":[["61481aa0e","62c31b490","74916136f","918683d12","9505175f2","c4d51b627","e88eb4e76"]],"commits":["9505175f2"],"cves":["CVE-2026-15742"],"db_id":"24d49d08ad8dddbb2e9b85283621ee67","html":"\u003cp\u003e\n      修复 \u003ccode\u003econtrib/fuzzystrmatch\u003c/code\u003e 的\n      \u003ccode\u003elevenshtein()\u003c/code\u003e 和\n      \u003ccode\u003elevenshtein_less_equal()\u003c/code\u003e 函数中的整数溢出（Nathan Bossart）\u003ca href=\"https://postgr.es/c/9505175f2\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      向这些函数传入很大的代价值可能引发整数溢出，从而产生无意义的结果，甚至在某些情况下导致越界写入。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Ben Morris（与 Claude 和 Anthropic Research 协作）报告此问题。（CVE-2026-15742）\n     \u003c/p\u003e","id":"14.24-249a71765a38f726","identity_text":"Fix integer overflows in contrib/fuzzystrmatch's levenshtein() and levenshtein_less_equal() functions (Nathan Bossart) Passing large cost values to these functions could cause integer overflows, thereby producing nonsensical results, and even causing out-of-bounds writes in some cases. The PostgreSQL Project thanks Ben Morris (in collaboration with Claude and Anthropic Research) for reporting this problem. (CVE-2026-15742)","part":"changes","patch_ids":["b6a4ec5efdc01505934fe024a8a4270f"],"related_changes":[{"db_id":"1e5eda106e8fd11472d74f91bffc2ff0","evidence":{"patch_ids":["b6a4ec5efdc01505934fe024a8a4270f"],"same_day":true,"statement_hash":"f6379cf73e457381cf432fa9add17bfe91f2d96391011c3fe8081ecbbd13eff5"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 contrib/fuzzystrmatch 的 levenshtein() 和 levenshtein_less_equal() 函数中的整数溢出","url":"/docs/compare/?release=18.6#18.6-9f4c551d8e885121","version":"18.6"},{"db_id":"6cca8c3102c334bca04243a3114f48fe","evidence":{"patch_ids":["b6a4ec5efdc01505934fe024a8a4270f"],"same_day":true,"statement_hash":"f6379cf73e457381cf432fa9add17bfe91f2d96391011c3fe8081ecbbd13eff5"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 contrib/fuzzystrmatch 的 levenshtein() 和 levenshtein_less_equal() 函数中的整数溢出","url":"/docs/compare/?release=17.11#17.11-8ee281616fb9fd49","version":"17.11"},{"db_id":"bc23bdcfa3cae705ffa99474b3b97aae","evidence":{"patch_ids":["b6a4ec5efdc01505934fe024a8a4270f"],"same_day":true,"statement_hash":"f6379cf73e457381cf432fa9add17bfe91f2d96391011c3fe8081ecbbd13eff5"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 contrib/fuzzystrmatch 的 levenshtein() 和 levenshtein_less_equal() 函数中的整数溢出","url":"/docs/compare/?release=16.15#16.15-a51d10d5c2a5583d","version":"16.15"},{"db_id":"f41b59ba5bf8ae6184895fe8e7bb8dc1","evidence":{"patch_ids":["b6a4ec5efdc01505934fe024a8a4270f"],"same_day":true,"statement_hash":"f6379cf73e457381cf432fa9add17bfe91f2d96391011c3fe8081ecbbd13eff5"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 contrib/fuzzystrmatch 的 levenshtein() 和 levenshtein_less_equal() 函数中的整数溢出","url":"/docs/compare/?release=15.19#15.19-45fb139f005bf72d","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["b6a4ec5efdc01505934fe024a8a4270f"],"same_day":true,"statement_hash":"f6379cf73e457381cf432fa9add17bfe91f2d96391011c3fe8081ecbbd13eff5"},"rule":2,"target":"1e5eda106e8fd11472d74f91bffc2ff0","type":"equivalent"},{"evidence":{"patch_ids":["b6a4ec5efdc01505934fe024a8a4270f"],"same_day":true,"statement_hash":"f6379cf73e457381cf432fa9add17bfe91f2d96391011c3fe8081ecbbd13eff5"},"rule":2,"target":"6cca8c3102c334bca04243a3114f48fe","type":"equivalent"},{"evidence":{"patch_ids":["b6a4ec5efdc01505934fe024a8a4270f"],"same_day":true,"statement_hash":"f6379cf73e457381cf432fa9add17bfe91f2d96391011c3fe8081ecbbd13eff5"},"rule":2,"target":"bc23bdcfa3cae705ffa99474b3b97aae","type":"equivalent"},{"evidence":{"patch_ids":["b6a4ec5efdc01505934fe024a8a4270f"],"same_day":true,"statement_hash":"f6379cf73e457381cf432fa9add17bfe91f2d96391011c3fe8081ecbbd13eff5"},"rule":2,"target":"f41b59ba5bf8ae6184895fe8e7bb8dc1","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["9505175f2"],"source_entry_id":"14.24/changes/025","source_hash":"7d77fb60d4bfdeab512f6dfc7987fe27f6207362ce4d709b815c8c700243c369","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"f6379cf73e457381cf432fa9add17bfe91f2d96391011c3fe8081ecbbd13eff5","text":"修复 contrib/fuzzystrmatch 的 levenshtein() 和 levenshtein_less_equal() 函数中的整数溢出（Nathan Bossart）§ 向这些函数传入很大的代价值可能引发整数溢出，从而产生无意义的结果，甚至在某些情况下导致越界写入。 PostgreSQL 项目感谢 Ben Morris（与 Claude 和 Anthropic Research 协作）报告此问题。（CVE-2026-15742）","title":"修复 contrib/fuzzystrmatch 的 levenshtein() 和 levenshtein_less_equal() 函数中的整数溢出","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["1e2795dde","8a31ffc2d","bb02eba53"],"commit_groups":[["1e2795dde","8a31ffc2d","bb02eba53"]],"commits":[],"cves":["CVE-2026-14676"],"db_id":"aaa4509a01eb087a7c8dae3d3477599b","html":"\u003cp\u003e\n      修复 \u003ccode\u003econtrib/pg_stat_statements\u003c/code\u003e 中的缓冲区越界写入（Álvaro Herrera）\n     \u003c/p\u003e\u003cp\u003e\n      查询规范化过程未准确计算规范化字符串所需的空间。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Sajeeb Lohani（与 TrendAI Zero Day Initiative 合作）和 Yuelin Wang\n      报告此问题。（CVE-2026-14676）\n     \u003c/p\u003e","id":"14.24-c47a9a8863c0fc6e","identity_text":"Fix buffer overrun in contrib/pg_stat_statements (Álvaro Herrera) Query normalization didn't accurately account for the amount of space the normalized string would require. The PostgreSQL Project thanks Sajeeb Lohani (with TrendAI Zero Day Initiative) and Yuelin Wang for reporting this problem. (CVE-2026-14676)","part":"changes","patch_ids":["ff92e3cbebc5005b0bef45f9f1d8d30a"],"related_changes":[{"db_id":"e84c1b71b1c15bae4e222a2f72d84864","evidence":{"patch_ids":["ff92e3cbebc5005b0bef45f9f1d8d30a"],"same_day":true,"statement_hash":"9ccd331655eef445554d4bf3ba5a781e3ca80ec62b9fce48b4cf6f7177789b22"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 contrib/pg_stat_statements 中的缓冲区越界写入","url":"/docs/compare/?release=18.6#18.6-c2bc95cc72b98750","version":"18.6"},{"db_id":"d7011cf7f02dec0d6f5320d50f1060d7","evidence":{"patch_ids":["ff92e3cbebc5005b0bef45f9f1d8d30a"],"same_day":true,"statement_hash":"9ccd331655eef445554d4bf3ba5a781e3ca80ec62b9fce48b4cf6f7177789b22"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 contrib/pg_stat_statements 中的缓冲区越界写入","url":"/docs/compare/?release=17.11#17.11-c47a9a8863c0fc6e","version":"17.11"},{"db_id":"d8f3c95effa66c9d7648ed329303a70e","evidence":{"patch_ids":["ff92e3cbebc5005b0bef45f9f1d8d30a"],"same_day":true,"statement_hash":"9ccd331655eef445554d4bf3ba5a781e3ca80ec62b9fce48b4cf6f7177789b22"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 contrib/pg_stat_statements 中的缓冲区越界写入","url":"/docs/compare/?release=16.15#16.15-c47a9a8863c0fc6e","version":"16.15"},{"db_id":"29895bb80ed2951a21b387b1a32fd0bf","evidence":{"patch_ids":["ff92e3cbebc5005b0bef45f9f1d8d30a"],"same_day":true,"statement_hash":"9ccd331655eef445554d4bf3ba5a781e3ca80ec62b9fce48b4cf6f7177789b22"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 contrib/pg_stat_statements 中的缓冲区越界写入","url":"/docs/compare/?release=15.19#15.19-c47a9a8863c0fc6e","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["ff92e3cbebc5005b0bef45f9f1d8d30a"],"same_day":true,"statement_hash":"9ccd331655eef445554d4bf3ba5a781e3ca80ec62b9fce48b4cf6f7177789b22"},"rule":2,"target":"29895bb80ed2951a21b387b1a32fd0bf","type":"equivalent"},{"evidence":{"patch_ids":["ff92e3cbebc5005b0bef45f9f1d8d30a"],"same_day":true,"statement_hash":"9ccd331655eef445554d4bf3ba5a781e3ca80ec62b9fce48b4cf6f7177789b22"},"rule":2,"target":"d7011cf7f02dec0d6f5320d50f1060d7","type":"equivalent"},{"evidence":{"patch_ids":["ff92e3cbebc5005b0bef45f9f1d8d30a"],"same_day":true,"statement_hash":"9ccd331655eef445554d4bf3ba5a781e3ca80ec62b9fce48b4cf6f7177789b22"},"rule":2,"target":"d8f3c95effa66c9d7648ed329303a70e","type":"equivalent"},{"evidence":{"patch_ids":["ff92e3cbebc5005b0bef45f9f1d8d30a"],"same_day":true,"statement_hash":"9ccd331655eef445554d4bf3ba5a781e3ca80ec62b9fce48b4cf6f7177789b22"},"rule":2,"target":"e84c1b71b1c15bae4e222a2f72d84864","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["1e2795dde"],"source_entry_id":"14.24/changes/026","source_hash":"ca48f4077f77c6c16b1f3b54ed2340924f89b69f65b4efb2a69cd24757c7f56b","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"9ccd331655eef445554d4bf3ba5a781e3ca80ec62b9fce48b4cf6f7177789b22","text":"修复 contrib/pg_stat_statements 中的缓冲区越界写入（Álvaro Herrera） 查询规范化过程未准确计算规范化字符串所需的空间。 PostgreSQL 项目感谢 Sajeeb Lohani（与 TrendAI Zero Day Initiative 合作）和 Yuelin Wang 报告此问题。（CVE-2026-14676）","title":"修复 contrib/pg_stat_statements 中的缓冲区越界写入","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["1af08af69","24c88cd39","66c2dbb20","849019a50","a74aa0854","aa7b5815e","c7c82a88c"],"commit_groups":[["1af08af69","24c88cd39","66c2dbb20","849019a50","a74aa0854","aa7b5815e","c7c82a88c"]],"commits":["a74aa0854"],"cves":["CVE-2026-14678"],"db_id":"c1b223f3527ab1382981f7ea6931f7ec","html":"\u003cp\u003e\n      修复 \u003ccode\u003econtrib/pg_trgm\u003c/code\u003e 的 GiST picksplit 函数中的数据类型错误（Heikki Linnakangas）\u003ca href=\"https://postgr.es/c/a74aa0854\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      此错误会导致缓冲区越界读取，通常造成不佳的页面分裂决策；在极少数情况下也可能导致崩溃。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Mehmet D. Ince 报告此问题。（CVE-2026-14678）\n     \u003c/p\u003e","id":"14.24-76522194454c0c43","identity_text":"Fix datatype error in contrib/pg_trgm's GiST picksplit function (Heikki Linnakangas) This mistake resulted in reading past the end of the buffer, typically causing bad split decisions; but a crash could ensue if you're very unlucky. The PostgreSQL Project thanks Mehmet D. Ince for reporting this problem. (CVE-2026-14678)","part":"changes","patch_ids":["e6003b6617841df26303992ba1215f03"],"related_changes":[{"db_id":"0bc10887e786dd035f4571e42ea848b8","evidence":{"patch_ids":["e6003b6617841df26303992ba1215f03"],"same_day":true,"statement_hash":"b75b9d4c297e71b80fedfe6eeb16417da2cd09f4baa7f5d2b7d3f4d2495f3474"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 contrib/pg_trgm 的 GiST picksplit 函数中的数据类型错误","url":"/docs/compare/?release=18.6#18.6-b960de4f8267096f","version":"18.6"},{"db_id":"007e7b20002c9154a7b78500dad11fde","evidence":{"patch_ids":["e6003b6617841df26303992ba1215f03"],"same_day":true,"statement_hash":"b75b9d4c297e71b80fedfe6eeb16417da2cd09f4baa7f5d2b7d3f4d2495f3474"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 contrib/pg_trgm 的 GiST picksplit 函数中的数据类型错误","url":"/docs/compare/?release=17.11#17.11-caca197ce0ba4b3f","version":"17.11"},{"db_id":"1dcffcddaa3ea6a57ebf8bf560e8c531","evidence":{"patch_ids":["e6003b6617841df26303992ba1215f03"],"same_day":true,"statement_hash":"b75b9d4c297e71b80fedfe6eeb16417da2cd09f4baa7f5d2b7d3f4d2495f3474"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 contrib/pg_trgm 的 GiST picksplit 函数中的数据类型错误","url":"/docs/compare/?release=16.15#16.15-0621542d439e129f","version":"16.15"},{"db_id":"b9b08968a5deb7a55558cd0e3c3ecb91","evidence":{"patch_ids":["e6003b6617841df26303992ba1215f03"],"same_day":true,"statement_hash":"b75b9d4c297e71b80fedfe6eeb16417da2cd09f4baa7f5d2b7d3f4d2495f3474"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 contrib/pg_trgm 的 GiST picksplit 函数中的数据类型错误","url":"/docs/compare/?release=15.19#15.19-057de36f6fc47ee3","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["e6003b6617841df26303992ba1215f03"],"same_day":true,"statement_hash":"b75b9d4c297e71b80fedfe6eeb16417da2cd09f4baa7f5d2b7d3f4d2495f3474"},"rule":2,"target":"007e7b20002c9154a7b78500dad11fde","type":"equivalent"},{"evidence":{"patch_ids":["e6003b6617841df26303992ba1215f03"],"same_day":true,"statement_hash":"b75b9d4c297e71b80fedfe6eeb16417da2cd09f4baa7f5d2b7d3f4d2495f3474"},"rule":2,"target":"0bc10887e786dd035f4571e42ea848b8","type":"equivalent"},{"evidence":{"patch_ids":["e6003b6617841df26303992ba1215f03"],"same_day":true,"statement_hash":"b75b9d4c297e71b80fedfe6eeb16417da2cd09f4baa7f5d2b7d3f4d2495f3474"},"rule":2,"target":"1dcffcddaa3ea6a57ebf8bf560e8c531","type":"equivalent"},{"evidence":{"patch_ids":["e6003b6617841df26303992ba1215f03"],"same_day":true,"statement_hash":"b75b9d4c297e71b80fedfe6eeb16417da2cd09f4baa7f5d2b7d3f4d2495f3474"},"rule":2,"target":"b9b08968a5deb7a55558cd0e3c3ecb91","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["a74aa0854"],"source_entry_id":"14.24/changes/027","source_hash":"b9e62241b1d7ca7d16011753909762e5489665514e21968076633b75c16735b6","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"b75b9d4c297e71b80fedfe6eeb16417da2cd09f4baa7f5d2b7d3f4d2495f3474","text":"修复 contrib/pg_trgm 的 GiST picksplit 函数中的数据类型错误（Heikki Linnakangas）§ 此错误会导致缓冲区越界读取，通常造成不佳的页面分裂决策；在极少数情况下也可能导致崩溃。 PostgreSQL 项目感谢 Mehmet D. Ince 报告此问题。（CVE-2026-14678）","title":"修复 contrib/pg_trgm 的 GiST picksplit 函数中的数据类型错误","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["1fbe2066d","5b72d0279","66a5146dc","79a506228","a572dd213","b7b513d9a"],"commit_groups":[["1fbe2066d","5b72d0279","66a5146dc","79a506228","a572dd213","b7b513d9a"]],"commits":["5b72d0279"],"cves":["CVE-2026-14671"],"db_id":"7dbe14e2bbf06d93dd90088eae989b60","html":"\u003cp\u003e\n      移除 \u003ccode\u003econtrib/refint\u003c/code\u003e 中的计划缓存（Ayush Tiwari）\u003ca href=\"https://postgr.es/c/5b72d0279\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      这种缓存行为存在几个严重缺陷，尤其是\n      \u003ccode\u003echeck_foreign_key()\u003c/code\u003e 会把新键值嵌入其级联 UPDATE 查询，因此缓存计划会重复使用最初所需的值，而不是当前应使用的键值。最简单的解决办法是移除该缓存。\n     \u003c/p\u003e\u003cp\u003e\n\u003cspan\u003ePostgreSQL\u003c/span\u003e 项目感谢\n      Hcamael 报告此问题。（CVE-2026-14671）\n     \u003c/p\u003e","id":"14.24-80251253da1ccc96","identity_text":"Remove the plan cache in contrib/refint (Ayush Tiwari) This caching behavior has several serious bugs, notably that check_foreign_key() embeds the new key values in its cascade-UPDATE queries, so a cached plan reuses the originally-needed values rather than the key values that should be used. The simplest solution is to remove it. The PostgreSQL Project thanks Hcamael for reporting this problem. (CVE-2026-14671)","part":"changes","patch_ids":["1a32666836cb434aea5b3cbd8282c9f7"],"related_changes":[{"db_id":"139a1ada6baf2bae757b6a1a97ee7f41","evidence":{"patch_ids":["1a32666836cb434aea5b3cbd8282c9f7"],"same_day":true,"statement_hash":"b8e6fe77ce440b33c793882e33b84a13458e57df19432239a74f731dbb6496f9"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"移除 contrib/refint 中的计划缓存","url":"/docs/compare/?release=18.6#18.6-2fe39251a9e1874e","version":"18.6"},{"db_id":"aca3bdc694388071f82dcc5eb7deb70d","evidence":{"patch_ids":["1a32666836cb434aea5b3cbd8282c9f7"],"same_day":true,"statement_hash":"b8e6fe77ce440b33c793882e33b84a13458e57df19432239a74f731dbb6496f9"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"移除 contrib/refint 中的计划缓存","url":"/docs/compare/?release=17.11#17.11-9677b8014f265a17","version":"17.11"},{"db_id":"ddbe7d30f92efca35dca583745e7a91a","evidence":{"patch_ids":["1a32666836cb434aea5b3cbd8282c9f7"],"same_day":true,"statement_hash":"b8e6fe77ce440b33c793882e33b84a13458e57df19432239a74f731dbb6496f9"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"移除 contrib/refint 中的计划缓存","url":"/docs/compare/?release=16.15#16.15-b2c274cdcaf4ba1b","version":"16.15"},{"db_id":"0edf0fe6be4ddcafd5c7d27addaa918f","evidence":{"patch_ids":["1a32666836cb434aea5b3cbd8282c9f7"],"same_day":true,"statement_hash":"b8e6fe77ce440b33c793882e33b84a13458e57df19432239a74f731dbb6496f9"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"移除 contrib/refint 中的计划缓存","url":"/docs/compare/?release=15.19#15.19-cf70552f3d82a213","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["1a32666836cb434aea5b3cbd8282c9f7"],"same_day":true,"statement_hash":"b8e6fe77ce440b33c793882e33b84a13458e57df19432239a74f731dbb6496f9"},"rule":2,"target":"0edf0fe6be4ddcafd5c7d27addaa918f","type":"equivalent"},{"evidence":{"patch_ids":["1a32666836cb434aea5b3cbd8282c9f7"],"same_day":true,"statement_hash":"b8e6fe77ce440b33c793882e33b84a13458e57df19432239a74f731dbb6496f9"},"rule":2,"target":"139a1ada6baf2bae757b6a1a97ee7f41","type":"equivalent"},{"evidence":{"patch_ids":["1a32666836cb434aea5b3cbd8282c9f7"],"same_day":true,"statement_hash":"b8e6fe77ce440b33c793882e33b84a13458e57df19432239a74f731dbb6496f9"},"rule":2,"target":"aca3bdc694388071f82dcc5eb7deb70d","type":"equivalent"},{"evidence":{"patch_ids":["1a32666836cb434aea5b3cbd8282c9f7"],"same_day":true,"statement_hash":"b8e6fe77ce440b33c793882e33b84a13458e57df19432239a74f731dbb6496f9"},"rule":2,"target":"ddbe7d30f92efca35dca583745e7a91a","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["5b72d0279"],"source_entry_id":"14.24/changes/028","source_hash":"85e48a33d55eb285ffec0257095c62e26afe52593f93f23acb923715b13bf36a","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"b8e6fe77ce440b33c793882e33b84a13458e57df19432239a74f731dbb6496f9","text":"移除 contrib/refint 中的计划缓存（Ayush Tiwari）§ 这种缓存行为存在几个严重缺陷，尤其是 check_foreign_key() 会把新键值嵌入其级联 UPDATE 查询，因此缓存计划会重复使用最初所需的值，而不是当前应使用的键值。最简单的解决办法是移除该缓存。 PostgreSQL 项目感谢 Hcamael 报告此问题。（CVE-2026-14671）","title":"移除 contrib/refint 中的计划缓存","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["2bb60eb4f","2dfe75f98","42a3194e5"],"commit_groups":[["2bb60eb4f","2dfe75f98","42a3194e5"]],"commits":["2bb60eb4f"],"cves":[],"db_id":"eb42e5aa2e27518ec6a03155135fe29e","html":"\u003cp\u003e\n      修复重放由较旧小版本生成的 WAL 时发生的自死锁（Andrey Borodin）\u003ca href=\"https://postgr.es/c/2bb60eb4f\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      该错误由上一批小版本发布引入。在某些场景中，它会使跟随较旧小版本主库的备库卡住。\n     \u003c/p\u003e","id":"14.24-b04257b41ad2b97e","identity_text":"Fix self-deadlock when replaying WAL generated by an older minor version (Andrey Borodin) This error was introduced in the previous set of minor releases. It caused standby servers that were following a primary of an older minor release version to get stuck in some scenarios.","part":"changes","patch_ids":["391bc973cdca4b3d1a27beb999ce9ebe"],"related_changes":[{"db_id":"84ce4daf734d18a70c460556862b1365","evidence":{"patch_ids":["391bc973cdca4b3d1a27beb999ce9ebe"],"same_day":true,"statement_hash":"3690951e53a3f75de59c1b0018e637bfa23861de52ca307aa4d0888a917fa4fb"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复重放由较旧小版本生成的 WAL 时发生的自死锁","url":"/docs/compare/?release=16.15#16.15-edc0d9fdf44f08e4","version":"16.15"},{"db_id":"f9e47f65a5de6643777c00ef8a224814","evidence":{"patch_ids":["391bc973cdca4b3d1a27beb999ce9ebe"],"same_day":true,"statement_hash":"3690951e53a3f75de59c1b0018e637bfa23861de52ca307aa4d0888a917fa4fb"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复重放由较旧小版本生成的 WAL 时发生的自死锁","url":"/docs/compare/?release=15.19#15.19-3c293c0013973f80","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["391bc973cdca4b3d1a27beb999ce9ebe"],"same_day":true,"statement_hash":"3690951e53a3f75de59c1b0018e637bfa23861de52ca307aa4d0888a917fa4fb"},"rule":2,"target":"84ce4daf734d18a70c460556862b1365","type":"equivalent"},{"evidence":{"patch_ids":["391bc973cdca4b3d1a27beb999ce9ebe"],"same_day":true,"statement_hash":"3690951e53a3f75de59c1b0018e637bfa23861de52ca307aa4d0888a917fa4fb"},"rule":2,"target":"f9e47f65a5de6643777c00ef8a224814","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["2bb60eb4f"],"source_entry_id":"14.24/changes/029","source_hash":"713ea7576ebe1afac055bc8360701fb2105a9da65d3a0bafe8bd065df001013d","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"3690951e53a3f75de59c1b0018e637bfa23861de52ca307aa4d0888a917fa4fb","text":"修复重放由较旧小版本生成的 WAL 时发生的自死锁（Andrey Borodin）§ 该错误由上一批小版本发布引入。在某些场景中，它会使跟随较旧小版本主库的备库卡住。","title":"修复重放由较旧小版本生成的 WAL 时发生的自死锁","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["3704870b2","4ea497a92","7213cbfa0","7d74b2644","894da35b3","cec48686a","f57df2068"],"commit_groups":[["3704870b2","4ea497a92","7213cbfa0","7d74b2644","894da35b3","cec48686a","f57df2068"]],"commits":["cec48686a"],"cves":[],"db_id":"356859c6db4851d1f22713fc26ca208a","html":"\u003cp\u003e\n      修复重新扫描异步 Append 计划节点时异步读取处理不当的问题（Alexander Korotkov、Gleb Kashkin、Etsuro Fujita）\u003ca href=\"https://postgr.es/c/cec48686a\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      当上层计划节点尚未读取完整的 Append 输出就重新扫描 Append 时，需要丢弃所有已发送到外部服务器且尚未完成的请求（例如由\n      \u003ccode\u003epostgres_fdw\u003c/code\u003e 发送的请求）。此前，当子计划的参数发生变化，或者在下一次扫描中被分区剪枝丢弃时，这项操作未能正确完成。这可能导致错误的查询结果、无限循环或断言失败。\n     \u003c/p\u003e","id":"14.24-e91417bd4fbd5c30","identity_text":"Fix mis-handling of asynchronous reads when rescanning an asynchronous Append plan node (Alexander Korotkov, Gleb Kashkin, Etsuro Fujita) When an upper plan node rescans an Append before having read the entire Append output, we need to discard any in-flight requests sent to external servers (by postgres_fdw for example). This was not done correctly in cases where a subplan has parameter changes or is discarded by partition pruning in the next scan. The outcome could be incorrect query results, an infinite loop, or an assertion failure.","part":"changes","patch_ids":["9c0723170572c08606a9295f60002d24"],"related_changes":[{"db_id":"14a676aedb1f7035485b3957b6cdb1d3","evidence":{"patch_ids":["9c0723170572c08606a9295f60002d24"],"same_day":true,"statement_hash":"63920dc25b666a17f0abbbd9dbd5d73e39729a95414c23162e2eef52f54e0156"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复重新扫描异步 Append 计划节点时异步读取处理不当的问题","url":"/docs/compare/?release=18.6#18.6-ac95828b13f18d05","version":"18.6"},{"db_id":"308bf9c42c99219ddb3217fdf72c3cc2","evidence":{"patch_ids":["9c0723170572c08606a9295f60002d24"],"same_day":true,"statement_hash":"63920dc25b666a17f0abbbd9dbd5d73e39729a95414c23162e2eef52f54e0156"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复重新扫描异步 Append 计划节点时异步读取处理不当的问题","url":"/docs/compare/?release=17.11#17.11-3e22bb5ab29aa62e","version":"17.11"},{"db_id":"4977c45c15376d01b25828041933e6ed","evidence":{"patch_ids":["9c0723170572c08606a9295f60002d24"],"same_day":true,"statement_hash":"63920dc25b666a17f0abbbd9dbd5d73e39729a95414c23162e2eef52f54e0156"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复重新扫描异步 Append 计划节点时异步读取处理不当的问题","url":"/docs/compare/?release=16.15#16.15-726d3c037f7a5f67","version":"16.15"},{"db_id":"d3c85d15eab520a6fbdb79e9d5b8db40","evidence":{"patch_ids":["9c0723170572c08606a9295f60002d24"],"same_day":true,"statement_hash":"63920dc25b666a17f0abbbd9dbd5d73e39729a95414c23162e2eef52f54e0156"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复重新扫描异步 Append 计划节点时异步读取处理不当的问题","url":"/docs/compare/?release=15.19#15.19-2115870724f13b57","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["9c0723170572c08606a9295f60002d24"],"same_day":true,"statement_hash":"63920dc25b666a17f0abbbd9dbd5d73e39729a95414c23162e2eef52f54e0156"},"rule":2,"target":"14a676aedb1f7035485b3957b6cdb1d3","type":"equivalent"},{"evidence":{"patch_ids":["9c0723170572c08606a9295f60002d24"],"same_day":true,"statement_hash":"63920dc25b666a17f0abbbd9dbd5d73e39729a95414c23162e2eef52f54e0156"},"rule":2,"target":"308bf9c42c99219ddb3217fdf72c3cc2","type":"equivalent"},{"evidence":{"patch_ids":["9c0723170572c08606a9295f60002d24"],"same_day":true,"statement_hash":"63920dc25b666a17f0abbbd9dbd5d73e39729a95414c23162e2eef52f54e0156"},"rule":2,"target":"4977c45c15376d01b25828041933e6ed","type":"equivalent"},{"evidence":{"patch_ids":["9c0723170572c08606a9295f60002d24"],"same_day":true,"statement_hash":"63920dc25b666a17f0abbbd9dbd5d73e39729a95414c23162e2eef52f54e0156"},"rule":2,"target":"d3c85d15eab520a6fbdb79e9d5b8db40","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["cec48686a"],"source_entry_id":"14.24/changes/030","source_hash":"73700b2921ddc8aa5d103247e09004d9962d2f2b148e5ca9b0a199bef5e73cdd","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"63920dc25b666a17f0abbbd9dbd5d73e39729a95414c23162e2eef52f54e0156","text":"修复重新扫描异步 Append 计划节点时异步读取处理不当的问题（Alexander Korotkov、Gleb Kashkin、Etsuro Fujita）§ 当上层计划节点尚未读取完整的 Append 输出就重新扫描 Append 时，需要丢弃所有已发送到外部服务器且尚未完成的请求（例如由 postgres_fdw 发送的请求）。此前，当子计划的参数发生变化，或者在下一次扫描中被分区剪枝丢弃时，这项操作未能正确完成。这可能导致错误的查询结果、无限循环或断言失败。","title":"修复重新扫描异步 Append 计划节点时异步读取处理不当的问题","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["02e69be47","31f2acde5","5190732c9","6098f35f4","709dfd27f","9a0cd8e73","f9282a650"],"commit_groups":[["02e69be47","31f2acde5","5190732c9","6098f35f4","709dfd27f","9a0cd8e73","f9282a650"]],"commits":["6098f35f4"],"cves":[],"db_id":"c03487e8eed72def14469f629495faba","html":"\u003cp\u003e\n      修复 RANGE 分区表的分区剪枝错误（David Rowley）\u003ca href=\"https://postgr.es/c/6098f35f4\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      在某些情况下，本不应跳过的 DEFAULT 分区会被跳过，这可能导致查询结果中缺少行。\n     \u003c/p\u003e","id":"14.24-b6f407b6d50bed97","identity_text":"Fix error in partition pruning for RANGE-partitioned tables (David Rowley) In some cases the DEFAULT partition would be skipped when it should not be, which could lead to rows missing from query results.","part":"changes","patch_ids":["07f80c898c23577b927785baf5699ba6"],"related_changes":[{"db_id":"128f5b0ef464d5fb3f9f8de9b62b5b0c","evidence":{"patch_ids":["07f80c898c23577b927785baf5699ba6"],"same_day":true,"statement_hash":"e3e0e32dc70a802e15316cd723301dfb9165a361cfaaa3eaebb6138320570c23"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 RANGE 分区表的分区剪枝错误","url":"/docs/compare/?release=18.6#18.6-1c1bf5522234d430","version":"18.6"},{"db_id":"199c05dd5ca242a1207113d841920d91","evidence":{"patch_ids":["07f80c898c23577b927785baf5699ba6"],"same_day":true,"statement_hash":"e3e0e32dc70a802e15316cd723301dfb9165a361cfaaa3eaebb6138320570c23"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 RANGE 分区表的分区剪枝错误","url":"/docs/compare/?release=17.11#17.11-ae4f5cd546a7dc28","version":"17.11"},{"db_id":"b1408f66d7e290909c80f8c2b9d6a6e6","evidence":{"patch_ids":["07f80c898c23577b927785baf5699ba6"],"same_day":true,"statement_hash":"e3e0e32dc70a802e15316cd723301dfb9165a361cfaaa3eaebb6138320570c23"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 RANGE 分区表的分区剪枝错误","url":"/docs/compare/?release=16.15#16.15-cce23f53ca16684a","version":"16.15"},{"db_id":"8e616a25980e478e4ba1d40fd43361c9","evidence":{"patch_ids":["07f80c898c23577b927785baf5699ba6"],"same_day":true,"statement_hash":"e3e0e32dc70a802e15316cd723301dfb9165a361cfaaa3eaebb6138320570c23"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 RANGE 分区表的分区剪枝错误","url":"/docs/compare/?release=15.19#15.19-b3f92b81dd82f323","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["07f80c898c23577b927785baf5699ba6"],"same_day":true,"statement_hash":"e3e0e32dc70a802e15316cd723301dfb9165a361cfaaa3eaebb6138320570c23"},"rule":2,"target":"128f5b0ef464d5fb3f9f8de9b62b5b0c","type":"equivalent"},{"evidence":{"patch_ids":["07f80c898c23577b927785baf5699ba6"],"same_day":true,"statement_hash":"e3e0e32dc70a802e15316cd723301dfb9165a361cfaaa3eaebb6138320570c23"},"rule":2,"target":"199c05dd5ca242a1207113d841920d91","type":"equivalent"},{"evidence":{"patch_ids":["07f80c898c23577b927785baf5699ba6"],"same_day":true,"statement_hash":"e3e0e32dc70a802e15316cd723301dfb9165a361cfaaa3eaebb6138320570c23"},"rule":2,"target":"8e616a25980e478e4ba1d40fd43361c9","type":"equivalent"},{"evidence":{"patch_ids":["07f80c898c23577b927785baf5699ba6"],"same_day":true,"statement_hash":"e3e0e32dc70a802e15316cd723301dfb9165a361cfaaa3eaebb6138320570c23"},"rule":2,"target":"b1408f66d7e290909c80f8c2b9d6a6e6","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["6098f35f4"],"source_entry_id":"14.24/changes/031","source_hash":"ea42a419ae7990c2d1f2a3589c8d24227402d584f40cf339aa3b21a51e14cf8d","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"e3e0e32dc70a802e15316cd723301dfb9165a361cfaaa3eaebb6138320570c23","text":"修复 RANGE 分区表的分区剪枝错误（David Rowley）§ 在某些情况下，本不应跳过的 DEFAULT 分区会被跳过，这可能导致查询结果中缺少行。","title":"修复 RANGE 分区表的分区剪枝错误","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["13b627a3e","239eabda4","26d6b7dc9","277122036","53470ffba","6fcee189b","9740c68ff"],"commit_groups":[["13b627a3e","239eabda4","26d6b7dc9","277122036","53470ffba","6fcee189b","9740c68ff"]],"commits":["13b627a3e"],"cves":[],"db_id":"295b1a7da9077453b2e0fd1899e5c7e4","html":"\u003cp\u003e\n      修复规划器对 \u003ccode\u003e\u003cem\u003e\u003ccode\u003evalue\u003c/code\u003e\u003c/em\u003e IN\n      (\u003cem\u003e\u003ccode\u003earray\u003c/code\u003e\u003c/em\u003e)\u003c/code\u003e 表达式所做的可空性和严格性检查（Ayush Tiwari）\u003ca href=\"https://postgr.es/c/13b627a3e\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      只有在已知数组操作数非空时，这些检查才应成功，但此前遗漏了这项考虑，因而可能应用本不该采用的优化。如果数组实际为空，这可能导致查询结果错误。\n     \u003c/p\u003e","id":"14.24-1f1442421fcf2295","identity_text":"Fix planner's nullability and strictness checks for value IN (array) expressions (Ayush Tiwari) These checks should only succeed if the array operand is known to be non-empty, but that consideration was missed, allowing optimizations to be applied that should not be. This could result in wrong query answers if the array actually was empty.","part":"changes","patch_ids":["df435503db83a1e14391340c77582135"],"related_changes":[{"db_id":"ad3ee3744d12ed87e41b743df908a973","evidence":{"patch_ids":["df435503db83a1e14391340c77582135"],"same_day":true,"statement_hash":"2d92bc3cfa84bb56afc5d1f1b3a42de958d5476b1ad5c8eeac46ecc8e878ca25"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复规划器对 value IN (array) 表达式所做的可空性和严格性检查","url":"/docs/compare/?release=18.6#18.6-7f07d942a2dc7fb3","version":"18.6"},{"db_id":"53fcc801e2a78a55196f6122abbd7a01","evidence":{"patch_ids":["df435503db83a1e14391340c77582135"],"same_day":true,"statement_hash":"2d92bc3cfa84bb56afc5d1f1b3a42de958d5476b1ad5c8eeac46ecc8e878ca25"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复规划器对 value IN (array) 表达式所做的可空性和严格性检查","url":"/docs/compare/?release=17.11#17.11-0179d9549f7c629e","version":"17.11"},{"db_id":"c4e4aedd211ab9a3cebe71bab9209dff","evidence":{"patch_ids":["df435503db83a1e14391340c77582135"],"same_day":true,"statement_hash":"2d92bc3cfa84bb56afc5d1f1b3a42de958d5476b1ad5c8eeac46ecc8e878ca25"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复规划器对 value IN (array) 表达式所做的可空性和严格性检查","url":"/docs/compare/?release=16.15#16.15-fa8b871fcf656789","version":"16.15"},{"db_id":"8c22785dc1e64a0a8f07acd08ee8695d","evidence":{"patch_ids":["df435503db83a1e14391340c77582135"],"same_day":true,"statement_hash":"2d92bc3cfa84bb56afc5d1f1b3a42de958d5476b1ad5c8eeac46ecc8e878ca25"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复规划器对 value IN (array) 表达式所做的可空性和严格性检查","url":"/docs/compare/?release=15.19#15.19-6f626d9b6541c108","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["df435503db83a1e14391340c77582135"],"same_day":true,"statement_hash":"2d92bc3cfa84bb56afc5d1f1b3a42de958d5476b1ad5c8eeac46ecc8e878ca25"},"rule":2,"target":"53fcc801e2a78a55196f6122abbd7a01","type":"equivalent"},{"evidence":{"patch_ids":["df435503db83a1e14391340c77582135"],"same_day":true,"statement_hash":"2d92bc3cfa84bb56afc5d1f1b3a42de958d5476b1ad5c8eeac46ecc8e878ca25"},"rule":2,"target":"8c22785dc1e64a0a8f07acd08ee8695d","type":"equivalent"},{"evidence":{"patch_ids":["df435503db83a1e14391340c77582135"],"same_day":true,"statement_hash":"2d92bc3cfa84bb56afc5d1f1b3a42de958d5476b1ad5c8eeac46ecc8e878ca25"},"rule":2,"target":"ad3ee3744d12ed87e41b743df908a973","type":"equivalent"},{"evidence":{"patch_ids":["df435503db83a1e14391340c77582135"],"same_day":true,"statement_hash":"2d92bc3cfa84bb56afc5d1f1b3a42de958d5476b1ad5c8eeac46ecc8e878ca25"},"rule":2,"target":"c4e4aedd211ab9a3cebe71bab9209dff","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["13b627a3e"],"source_entry_id":"14.24/changes/032","source_hash":"a3bc4e301beaacba0602cb306b77748d1aff04384d5d7bc85fb3abc0ad1a5f84","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"2d92bc3cfa84bb56afc5d1f1b3a42de958d5476b1ad5c8eeac46ecc8e878ca25","text":"修复规划器对 value IN (array) 表达式所做的可空性和严格性检查（Ayush Tiwari）§ 只有在已知数组操作数非空时，这些检查才应成功，但此前遗漏了这项考虑，因而可能应用本不该采用的优化。如果数组实际为空，这可能导致查询结果错误。","title":"修复规划器对 value IN (array) 表达式所做的可空性和严格性检查","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["06e94eccf","11aed8d19","19152e3c2","64778fac7","caebac5f1","cf2bfe073"],"commit_groups":[["06e94eccf","11aed8d19","19152e3c2","64778fac7","caebac5f1","cf2bfe073"]],"commits":["64778fac7"],"cves":[],"db_id":"f1ae81ec65ad7eceb75ed5e3e0b2c543","html":"\u003cp\u003e\n      补上对容器数据类型（数组、复合类型、范围类型）的等值比较是否支持 hash 运算的检查（Andrei Lepikhov、Tom Lane）\u003ca href=\"https://postgr.es/c/64778fac7\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      规划器在决定可以使用基于 hash 的计划类型之前，必须验证容器组成类型是否可进行 hash 运算。此前有些地方遗漏了这一步，导致执行时出现\u003cspan\u003e“\u003cspan\u003ecould not identify a hash function\u003c/span\u003e”\u003c/span\u003e错误。\n     \u003c/p\u003e","id":"14.24-16597bc3e22164d9","identity_text":"Add missed checks for hashability of equality comparisons on container datatypes (arrays, composites, ranges) (Andrei Lepikhov, Tom Lane) The planner must verify hashability of the container's component type(s) before deciding it can use a hash-based plan type. This step was missed in some places, leading to could not identify a hash function failures at execution.","part":"changes","patch_ids":["f162e2041e91d006f552b603fcf44b0b"],"related_changes":[{"db_id":"b401153415d6c7495b085ccde803a0bc","evidence":{"patch_ids":["f162e2041e91d006f552b603fcf44b0b"],"same_day":true,"statement_hash":"b7a7a5b48bc59370b10583c89b44b2318a828907126bcf1f7993377c9815a9e9"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"补上对容器数据类型（数组、复合类型、范围类型）的等值比较是否支持 hash 运算的检查","url":"/docs/compare/?release=18.6#18.6-7bb42265442bdc48","version":"18.6"},{"db_id":"4de85f9df67410e6ee11d61a4934c2dd","evidence":{"patch_ids":["f162e2041e91d006f552b603fcf44b0b"],"same_day":true,"statement_hash":"b7a7a5b48bc59370b10583c89b44b2318a828907126bcf1f7993377c9815a9e9"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"补上对容器数据类型（数组、复合类型、范围类型）的等值比较是否支持 hash 运算的检查","url":"/docs/compare/?release=17.11#17.11-f6f35a5c24f27bf2","version":"17.11"},{"db_id":"f09d5370fd92cd8394d32a7c6a39f808","evidence":{"patch_ids":["f162e2041e91d006f552b603fcf44b0b"],"same_day":true,"statement_hash":"b7a7a5b48bc59370b10583c89b44b2318a828907126bcf1f7993377c9815a9e9"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"补上对容器数据类型（数组、复合类型、范围类型）的等值比较是否支持 hash 运算的检查","url":"/docs/compare/?release=16.15#16.15-0fac2f9a99aa0191","version":"16.15"},{"db_id":"8f291081d50c65368eaa75ffccbfb916","evidence":{"patch_ids":["f162e2041e91d006f552b603fcf44b0b"],"same_day":true,"statement_hash":"b7a7a5b48bc59370b10583c89b44b2318a828907126bcf1f7993377c9815a9e9"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"补上对容器数据类型（数组、复合类型、范围类型）的等值比较是否支持 hash 运算的检查","url":"/docs/compare/?release=15.19#15.19-af11d749ae05b88c","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["f162e2041e91d006f552b603fcf44b0b"],"same_day":true,"statement_hash":"b7a7a5b48bc59370b10583c89b44b2318a828907126bcf1f7993377c9815a9e9"},"rule":2,"target":"4de85f9df67410e6ee11d61a4934c2dd","type":"equivalent"},{"evidence":{"patch_ids":["f162e2041e91d006f552b603fcf44b0b"],"same_day":true,"statement_hash":"b7a7a5b48bc59370b10583c89b44b2318a828907126bcf1f7993377c9815a9e9"},"rule":2,"target":"8f291081d50c65368eaa75ffccbfb916","type":"equivalent"},{"evidence":{"patch_ids":["f162e2041e91d006f552b603fcf44b0b"],"same_day":true,"statement_hash":"b7a7a5b48bc59370b10583c89b44b2318a828907126bcf1f7993377c9815a9e9"},"rule":2,"target":"b401153415d6c7495b085ccde803a0bc","type":"equivalent"},{"evidence":{"patch_ids":["f162e2041e91d006f552b603fcf44b0b"],"same_day":true,"statement_hash":"b7a7a5b48bc59370b10583c89b44b2318a828907126bcf1f7993377c9815a9e9"},"rule":2,"target":"f09d5370fd92cd8394d32a7c6a39f808","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["64778fac7"],"source_entry_id":"14.24/changes/033","source_hash":"536e9fd856c873e78d5065b63c3554047d2726c1e6cc7c4d07e12116ffc5bd6f","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"b7a7a5b48bc59370b10583c89b44b2318a828907126bcf1f7993377c9815a9e9","text":"补上对容器数据类型（数组、复合类型、范围类型）的等值比较是否支持 hash 运算的检查（Andrei Lepikhov、Tom Lane）§ 规划器在决定可以使用基于 hash 的计划类型之前，必须验证容器组成类型是否可进行 hash 运算。此前有些地方遗漏了这一步，导致执行时出现“could not identify a hash function”错误。","title":"补上对容器数据类型（数组、复合类型、范围类型）的等值比较是否支持 hash 运算的检查","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["18006c1bd","34785a0d5","785289de0","c374f2807","cad17745e","ce6e434ce","fef160d8b"],"commit_groups":[["18006c1bd","34785a0d5","785289de0","c374f2807","cad17745e","ce6e434ce","fef160d8b"]],"commits":["cad17745e"],"cves":[],"db_id":"ff8123d6270256da139869a45dd3811f","html":"\u003cp\u003e\n      修复 \u003ccode\u003eALTER COLUMN ... DROP EXPRESSION\u003c/code\u003e 在存在多级分区时无法正常工作的问题（Alberto Piai）\u003ca href=\"https://postgr.es/c/cad17745e\"\u003e§\u003c/a\u003e\n\u003c/p\u003e","id":"14.24-d190dfadb5c7a779","identity_text":"Fix ALTER COLUMN ... DROP EXPRESSION to work when there are multiple levels of partitions (Alberto Piai)","part":"changes","patch_ids":["eb3e04d63883499b6a42a7149830218b"],"related_changes":[{"db_id":"481ba0dce2331491936d08937b509331","evidence":{"patch_ids":["eb3e04d63883499b6a42a7149830218b"],"same_day":true,"statement_hash":"a9426a4c530fee747811532ad11a1324dac241e961f27f70d5a140fa9110019f"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 ALTER COLUMN ... DROP EXPRESSION 在存在多级分区时无法正常工作的问题","url":"/docs/compare/?release=18.6#18.6-14a8792e9a6b6b0c","version":"18.6"},{"db_id":"644f498dfc902b8478cebc735019df44","evidence":{"patch_ids":["eb3e04d63883499b6a42a7149830218b"],"same_day":true,"statement_hash":"a9426a4c530fee747811532ad11a1324dac241e961f27f70d5a140fa9110019f"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 ALTER COLUMN ... DROP EXPRESSION 在存在多级分区时无法正常工作的问题","url":"/docs/compare/?release=17.11#17.11-aa9ce164073e6fc7","version":"17.11"},{"db_id":"3e61c5e7800280c2d75348edca95b482","evidence":{"patch_ids":["eb3e04d63883499b6a42a7149830218b"],"same_day":true,"statement_hash":"a9426a4c530fee747811532ad11a1324dac241e961f27f70d5a140fa9110019f"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 ALTER COLUMN ... DROP EXPRESSION 在存在多级分区时无法正常工作的问题","url":"/docs/compare/?release=16.15#16.15-91ab80f8ca5d7d2a","version":"16.15"},{"db_id":"bbd2e283343d80bbe36c5d10b0b7b8d9","evidence":{"patch_ids":["eb3e04d63883499b6a42a7149830218b"],"same_day":true,"statement_hash":"a9426a4c530fee747811532ad11a1324dac241e961f27f70d5a140fa9110019f"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 ALTER COLUMN ... DROP EXPRESSION 在存在多级分区时无法正常工作的问题","url":"/docs/compare/?release=15.19#15.19-7a11afed9ca0958b","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["eb3e04d63883499b6a42a7149830218b"],"same_day":true,"statement_hash":"a9426a4c530fee747811532ad11a1324dac241e961f27f70d5a140fa9110019f"},"rule":2,"target":"3e61c5e7800280c2d75348edca95b482","type":"equivalent"},{"evidence":{"patch_ids":["eb3e04d63883499b6a42a7149830218b"],"same_day":true,"statement_hash":"a9426a4c530fee747811532ad11a1324dac241e961f27f70d5a140fa9110019f"},"rule":2,"target":"481ba0dce2331491936d08937b509331","type":"equivalent"},{"evidence":{"patch_ids":["eb3e04d63883499b6a42a7149830218b"],"same_day":true,"statement_hash":"a9426a4c530fee747811532ad11a1324dac241e961f27f70d5a140fa9110019f"},"rule":2,"target":"644f498dfc902b8478cebc735019df44","type":"equivalent"},{"evidence":{"patch_ids":["eb3e04d63883499b6a42a7149830218b"],"same_day":true,"statement_hash":"a9426a4c530fee747811532ad11a1324dac241e961f27f70d5a140fa9110019f"},"rule":2,"target":"bbd2e283343d80bbe36c5d10b0b7b8d9","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["cad17745e"],"source_entry_id":"14.24/changes/034","source_hash":"13f779ec2f474800fac9654482c7a78db8436541e1b3a17373dddb3bf98acb7f","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"a9426a4c530fee747811532ad11a1324dac241e961f27f70d5a140fa9110019f","text":"修复 ALTER COLUMN ... DROP EXPRESSION 在存在多级分区时无法正常工作的问题（Alberto Piai）§","title":"修复 ALTER COLUMN ... DROP EXPRESSION 在存在多级分区时无法正常工作的问题","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["1b17a6e3c","80c7f5467","a69503fb1","a7f7958ab","a8c2547ea","e99fb3262","eada45dd8"],"commit_groups":[["1b17a6e3c","80c7f5467","a69503fb1","a7f7958ab","a8c2547ea","e99fb3262","eada45dd8"]],"commits":["1b17a6e3c"],"cves":[],"db_id":"5937327b4c46721ff43bb1e6390ab869","html":"\u003cp\u003e\n      禁止将规则重命名为 \u003ccode\u003e_RETURN\u003c/code\u003e（Tom Lane）\u003ca href=\"https://postgr.es/c/1b17a6e3c\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      该名称保留给视图的 \u003ccode\u003eON SELECT\u003c/code\u003e 规则，但\n      \u003ccode\u003eALTER RULE\u003c/code\u003e 允许将其他规则重命名为\n      \u003ccode\u003e_RETURN\u003c/code\u003e，从而引发后续问题。\n     \u003c/p\u003e","id":"14.24-a419187d2e34008b","identity_text":"Disallow renaming a rule to _RETURN (Tom Lane) That name is reserved for a view's ON SELECT rule, but ALTER RULE allowed renaming other rules to _RETURN, causing trouble later.","part":"changes","patch_ids":["f0349091818c90f9895303f6c726eb25"],"related_changes":[{"db_id":"7fcd70e80ad8fcb50e2d2e784c2f096a","evidence":{"patch_ids":["f0349091818c90f9895303f6c726eb25"],"same_day":true,"statement_hash":"b2ef150a28cd11b0518b82c8e6876301cd0c2355969ae6477b6742e468bce526"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"禁止将规则重命名为 _RETURN","url":"/docs/compare/?release=18.6#18.6-7007f0ab50735ceb","version":"18.6"},{"db_id":"9cce45b7be8c80c09abfde1a981ce88a","evidence":{"patch_ids":["f0349091818c90f9895303f6c726eb25"],"same_day":true,"statement_hash":"b2ef150a28cd11b0518b82c8e6876301cd0c2355969ae6477b6742e468bce526"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"禁止将规则重命名为 _RETURN","url":"/docs/compare/?release=17.11#17.11-d462466d836ceca5","version":"17.11"},{"db_id":"3569cc7b8d590ae9ed38d474e4657d07","evidence":{"patch_ids":["f0349091818c90f9895303f6c726eb25"],"same_day":true,"statement_hash":"b2ef150a28cd11b0518b82c8e6876301cd0c2355969ae6477b6742e468bce526"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"禁止将规则重命名为 _RETURN","url":"/docs/compare/?release=16.15#16.15-2b73fd80a7001440","version":"16.15"},{"db_id":"372d29ed3f3b1d47e4559294d1b39ef0","evidence":{"patch_ids":["f0349091818c90f9895303f6c726eb25"],"same_day":true,"statement_hash":"b2ef150a28cd11b0518b82c8e6876301cd0c2355969ae6477b6742e468bce526"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"禁止将规则重命名为 _RETURN","url":"/docs/compare/?release=15.19#15.19-6d53c3bf09bfb5df","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["f0349091818c90f9895303f6c726eb25"],"same_day":true,"statement_hash":"b2ef150a28cd11b0518b82c8e6876301cd0c2355969ae6477b6742e468bce526"},"rule":2,"target":"3569cc7b8d590ae9ed38d474e4657d07","type":"equivalent"},{"evidence":{"patch_ids":["f0349091818c90f9895303f6c726eb25"],"same_day":true,"statement_hash":"b2ef150a28cd11b0518b82c8e6876301cd0c2355969ae6477b6742e468bce526"},"rule":2,"target":"372d29ed3f3b1d47e4559294d1b39ef0","type":"equivalent"},{"evidence":{"patch_ids":["f0349091818c90f9895303f6c726eb25"],"same_day":true,"statement_hash":"b2ef150a28cd11b0518b82c8e6876301cd0c2355969ae6477b6742e468bce526"},"rule":2,"target":"7fcd70e80ad8fcb50e2d2e784c2f096a","type":"equivalent"},{"evidence":{"patch_ids":["f0349091818c90f9895303f6c726eb25"],"same_day":true,"statement_hash":"b2ef150a28cd11b0518b82c8e6876301cd0c2355969ae6477b6742e468bce526"},"rule":2,"target":"9cce45b7be8c80c09abfde1a981ce88a","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["1b17a6e3c"],"source_entry_id":"14.24/changes/035","source_hash":"ed3d7378f6bf783c322d1714b0bde89b46c9bb0466bcf2696b545df373c02b2c","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"b2ef150a28cd11b0518b82c8e6876301cd0c2355969ae6477b6742e468bce526","text":"禁止将规则重命名为 _RETURN（Tom Lane）§ 该名称保留给视图的 ON SELECT 规则，但 ALTER RULE 允许将其他规则重命名为 _RETURN，从而引发后续问题。","title":"禁止将规则重命名为 _RETURN","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["28269fed6","55adef7ab","5b3712e31","74276e685","9f6fb1191","ac222bea5","e4527519b"],"commit_groups":[["28269fed6","55adef7ab","5b3712e31","74276e685","9f6fb1191","ac222bea5","e4527519b"]],"commits":["55adef7ab"],"cves":[],"db_id":"8c14bd88ba60ce9fdffdf9d72dd6da15","html":"\u003cp\u003e\n      修复 \u003ccode\u003eREINDEX CONCURRENTLY\u003c/code\u003e 与可延迟唯一约束一起使用时的问题（Nitin Motiani）\u003ca href=\"https://postgr.es/c/55adef7ab\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      在 \u003ccode\u003eREINDEX CONCURRENTLY\u003c/code\u003e 期间创建的临时索引副本被错误地标记为强制立即满足唯一性，导致虚假的约束违例报告。\n     \u003c/p\u003e","id":"14.24-8d7d065f5b1eab43","identity_text":"Fix use of REINDEX CONCURRENTLY with a deferred uniqueness constraint (Nitin Motiani) The transient index copy created during REINDEX CONCURRENTLY was incorrectly marked as enforcing immediate uniqueness, causing spurious reports of constraint violation.","part":"changes","patch_ids":["aa2c8d3131ec8ded09af11b556aef077"],"related_changes":[{"db_id":"69bafedd5508b393bd3564acfc03f161","evidence":{"patch_ids":["aa2c8d3131ec8ded09af11b556aef077"],"same_day":true,"statement_hash":"783702d713b28b6565831a41c965e36e4f1f58ce03f4dd140c2304c8f02a319e"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 REINDEX CONCURRENTLY 与可延迟唯一约束一起使用时的问题","url":"/docs/compare/?release=18.6#18.6-8283ac4f7a0c7e8e","version":"18.6"},{"db_id":"cb00c5a92a3128a4094b82f1499aa619","evidence":{"patch_ids":["aa2c8d3131ec8ded09af11b556aef077"],"same_day":true,"statement_hash":"783702d713b28b6565831a41c965e36e4f1f58ce03f4dd140c2304c8f02a319e"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 REINDEX CONCURRENTLY 与可延迟唯一约束一起使用时的问题","url":"/docs/compare/?release=17.11#17.11-5f6921ca5abdfb75","version":"17.11"},{"db_id":"d30d3b7b8ed23c31f3db15911611954c","evidence":{"patch_ids":["aa2c8d3131ec8ded09af11b556aef077"],"same_day":true,"statement_hash":"783702d713b28b6565831a41c965e36e4f1f58ce03f4dd140c2304c8f02a319e"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 REINDEX CONCURRENTLY 与可延迟唯一约束一起使用时的问题","url":"/docs/compare/?release=16.15#16.15-1b1cda18e768032a","version":"16.15"},{"db_id":"e5eb6e313eecd9bd0c4062dcd9a34861","evidence":{"patch_ids":["aa2c8d3131ec8ded09af11b556aef077"],"same_day":true,"statement_hash":"783702d713b28b6565831a41c965e36e4f1f58ce03f4dd140c2304c8f02a319e"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 REINDEX CONCURRENTLY 与可延迟唯一约束一起使用时的问题","url":"/docs/compare/?release=15.19#15.19-9517c019b26b4a15","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["aa2c8d3131ec8ded09af11b556aef077"],"same_day":true,"statement_hash":"783702d713b28b6565831a41c965e36e4f1f58ce03f4dd140c2304c8f02a319e"},"rule":2,"target":"69bafedd5508b393bd3564acfc03f161","type":"equivalent"},{"evidence":{"patch_ids":["aa2c8d3131ec8ded09af11b556aef077"],"same_day":true,"statement_hash":"783702d713b28b6565831a41c965e36e4f1f58ce03f4dd140c2304c8f02a319e"},"rule":2,"target":"cb00c5a92a3128a4094b82f1499aa619","type":"equivalent"},{"evidence":{"patch_ids":["aa2c8d3131ec8ded09af11b556aef077"],"same_day":true,"statement_hash":"783702d713b28b6565831a41c965e36e4f1f58ce03f4dd140c2304c8f02a319e"},"rule":2,"target":"d30d3b7b8ed23c31f3db15911611954c","type":"equivalent"},{"evidence":{"patch_ids":["aa2c8d3131ec8ded09af11b556aef077"],"same_day":true,"statement_hash":"783702d713b28b6565831a41c965e36e4f1f58ce03f4dd140c2304c8f02a319e"},"rule":2,"target":"e5eb6e313eecd9bd0c4062dcd9a34861","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["55adef7ab"],"source_entry_id":"14.24/changes/036","source_hash":"05361da4e6e08e7ecc3d4291faa99849c6c842a06c0f80d189d58ff830573f5a","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"783702d713b28b6565831a41c965e36e4f1f58ce03f4dd140c2304c8f02a319e","text":"修复 REINDEX CONCURRENTLY 与可延迟唯一约束一起使用时的问题（Nitin Motiani）§ 在 REINDEX CONCURRENTLY 期间创建的临时索引副本被错误地标记为强制立即满足唯一性，导致虚假的约束违例报告。","title":"修复 REINDEX CONCURRENTLY 与可延迟唯一约束一起使用时的问题","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["011384ba4","0de744cd5","49a712f32","55ea76426","8acfaa12a","b594efe52","fd2b89854"],"commit_groups":[["011384ba4","0de744cd5","49a712f32","55ea76426","8acfaa12a","b594efe52","fd2b89854"]],"commits":["49a712f32"],"cves":[],"db_id":"d3800c6695b429dd746c574f0d0d93e5","html":"\u003cp\u003e\n      修复 \u003ccode\u003eto_date()\u003c/code\u003e 对本地化月份名和星期名的匹配（Heikki Linnakangas）\u003ca href=\"https://postgr.es/c/49a712f32\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      当大小写折叠改变字符串的字节长度时，匹配逻辑会出现错误行为。\n     \u003c/p\u003e","id":"14.24-8ab3e783a00643a8","identity_text":"Fix matching of localized month/day names in to_date() (Heikki Linnakangas) The matching logic misbehaved in cases where case-folding changes the byte length of the string.","part":"changes","patch_ids":["b8ca654311e23485845960b9d01e76fc"],"related_changes":[{"db_id":"eb74da46a95f0db0c15adface2feaffa","evidence":{"patch_ids":["b8ca654311e23485845960b9d01e76fc"],"same_day":true,"statement_hash":"ef6d4c6554fba5da9f815beec3f0b6e84e2334ba9bd093035db08b8e3c61e1da"},"kind":"related","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 to_date() 对本地化月份名和星期名的匹配","url":"/docs/compare/?release=18.6#18.6-937d0b3149314116","version":"18.6"},{"db_id":"b0d8986fede0f1216361d5a43a076e4e","evidence":{"patch_ids":["b8ca654311e23485845960b9d01e76fc"],"same_day":true,"statement_hash":"ef6d4c6554fba5da9f815beec3f0b6e84e2334ba9bd093035db08b8e3c61e1da"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 to_date() 对本地化月份名和星期名的匹配","url":"/docs/compare/?release=17.11#17.11-8557fc5fb2204540","version":"17.11"},{"db_id":"08bd69e7cd8f7b8bd4623958f924ac19","evidence":{"patch_ids":["b8ca654311e23485845960b9d01e76fc"],"same_day":true,"statement_hash":"ef6d4c6554fba5da9f815beec3f0b6e84e2334ba9bd093035db08b8e3c61e1da"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 to_date() 对本地化月份名和星期名的匹配","url":"/docs/compare/?release=16.15#16.15-6af7d41f64cafafa","version":"16.15"},{"db_id":"0800233346f3a252c62d9a6f579d5573","evidence":{"patch_ids":["b8ca654311e23485845960b9d01e76fc"],"same_day":true,"statement_hash":"ef6d4c6554fba5da9f815beec3f0b6e84e2334ba9bd093035db08b8e3c61e1da"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 to_date() 对本地化月份名和星期名的匹配","url":"/docs/compare/?release=15.19#15.19-a96cc8b4c22ffe2e","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["b8ca654311e23485845960b9d01e76fc"],"same_day":true,"statement_hash":"ef6d4c6554fba5da9f815beec3f0b6e84e2334ba9bd093035db08b8e3c61e1da"},"rule":2,"target":"0800233346f3a252c62d9a6f579d5573","type":"equivalent"},{"evidence":{"patch_ids":["b8ca654311e23485845960b9d01e76fc"],"same_day":true,"statement_hash":"ef6d4c6554fba5da9f815beec3f0b6e84e2334ba9bd093035db08b8e3c61e1da"},"rule":2,"target":"08bd69e7cd8f7b8bd4623958f924ac19","type":"equivalent"},{"evidence":{"patch_ids":["b8ca654311e23485845960b9d01e76fc"],"same_day":true,"statement_hash":"ef6d4c6554fba5da9f815beec3f0b6e84e2334ba9bd093035db08b8e3c61e1da"},"rule":2,"target":"b0d8986fede0f1216361d5a43a076e4e","type":"equivalent"},{"evidence":{"patch_ids":["b8ca654311e23485845960b9d01e76fc"],"same_day":true,"statement_hash":"ef6d4c6554fba5da9f815beec3f0b6e84e2334ba9bd093035db08b8e3c61e1da"},"rule":2,"target":"eb74da46a95f0db0c15adface2feaffa","type":"related"}],"section":"变更","section_path":["变更"],"source_commits":["49a712f32"],"source_entry_id":"14.24/changes/037","source_hash":"0ead3f4de41739a1587e816bd02f513eb855316bef9c0fce89bacb9d6b797511","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"ef6d4c6554fba5da9f815beec3f0b6e84e2334ba9bd093035db08b8e3c61e1da","text":"修复 to_date() 对本地化月份名和星期名的匹配（Heikki Linnakangas）§ 当大小写折叠改变字符串的字节长度时，匹配逻辑会出现错误行为。","title":"修复 to_date() 对本地化月份名和星期名的匹配","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["0c9cbbfb5","273fe9485","82116023e","8bb935d61","c391375ba","f2ff15e4c"],"commit_groups":[["0c9cbbfb5","273fe9485","82116023e","8bb935d61","c391375ba","f2ff15e4c"]],"commits":["8bb935d61"],"cves":[],"db_id":"3ca62c531cc3952831a57b828ba3be6f","html":"\u003cp\u003e\n      修复谚文 U+11A7 (TBASE) 的 NFC 重组错误（Diego Frias、Michael Paquier）\u003ca href=\"https://postgr.es/c/8bb935d61\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      该字符被当作有效的 T 音节，但实际上并非如此，因此在规范化过程中被悄然吞掉。\n     \u003c/p\u003e","id":"14.24-68c56e11fd51d378","identity_text":"Fix incorrect NFC recomposition for Hangul U+11A7 (TBASE) (Diego Frias, Michael Paquier) This character was treated as a valid T syllable, which it is not, and hence silently swallowed during normalization.","part":"changes","patch_ids":["725250db9eb55dab240d380ece2a835b"],"related_changes":[{"db_id":"3a6050c2cb2fe8b496eaa4963a657d6a","evidence":{"patch_ids":["725250db9eb55dab240d380ece2a835b"],"same_day":true,"statement_hash":"0790cf6e3b0bbc225a449fee5cfdf5d70b4c6b23cc6777393156d83479c1c717"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复谚文 U+11A7 (TBASE) 的 NFC 重组错误","url":"/docs/compare/?release=18.6#18.6-bad72301bf213a01","version":"18.6"},{"db_id":"955b29dab0dd740875781e1df1992bdc","evidence":{"patch_ids":["725250db9eb55dab240d380ece2a835b"],"same_day":true,"statement_hash":"0790cf6e3b0bbc225a449fee5cfdf5d70b4c6b23cc6777393156d83479c1c717"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复谚文 U+11A7 (TBASE) 的 NFC 重组错误","url":"/docs/compare/?release=17.11#17.11-ed1426e8e931d4ba","version":"17.11"},{"db_id":"b4da21230a332d29b7fdd0c30e5eb1b0","evidence":{"patch_ids":["725250db9eb55dab240d380ece2a835b"],"same_day":true,"statement_hash":"0790cf6e3b0bbc225a449fee5cfdf5d70b4c6b23cc6777393156d83479c1c717"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复谚文 U+11A7 (TBASE) 的 NFC 重组错误","url":"/docs/compare/?release=16.15#16.15-b06391696fc6a94f","version":"16.15"},{"db_id":"aaef9ba320136440f8b0a3ec12c67f23","evidence":{"patch_ids":["725250db9eb55dab240d380ece2a835b"],"same_day":true,"statement_hash":"0790cf6e3b0bbc225a449fee5cfdf5d70b4c6b23cc6777393156d83479c1c717"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复谚文 U+11A7 (TBASE) 的 NFC 重组错误","url":"/docs/compare/?release=15.19#15.19-dab67300bc6bbe1f","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["725250db9eb55dab240d380ece2a835b"],"same_day":true,"statement_hash":"0790cf6e3b0bbc225a449fee5cfdf5d70b4c6b23cc6777393156d83479c1c717"},"rule":2,"target":"3a6050c2cb2fe8b496eaa4963a657d6a","type":"equivalent"},{"evidence":{"patch_ids":["725250db9eb55dab240d380ece2a835b"],"same_day":true,"statement_hash":"0790cf6e3b0bbc225a449fee5cfdf5d70b4c6b23cc6777393156d83479c1c717"},"rule":2,"target":"955b29dab0dd740875781e1df1992bdc","type":"equivalent"},{"evidence":{"patch_ids":["725250db9eb55dab240d380ece2a835b"],"same_day":true,"statement_hash":"0790cf6e3b0bbc225a449fee5cfdf5d70b4c6b23cc6777393156d83479c1c717"},"rule":2,"target":"aaef9ba320136440f8b0a3ec12c67f23","type":"equivalent"},{"evidence":{"patch_ids":["725250db9eb55dab240d380ece2a835b"],"same_day":true,"statement_hash":"0790cf6e3b0bbc225a449fee5cfdf5d70b4c6b23cc6777393156d83479c1c717"},"rule":2,"target":"b4da21230a332d29b7fdd0c30e5eb1b0","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["8bb935d61"],"source_entry_id":"14.24/changes/038","source_hash":"8427aa9f34e0273b1a1bacafa520d31cc7a932762deefe16949c69ca3463c51d","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"0790cf6e3b0bbc225a449fee5cfdf5d70b4c6b23cc6777393156d83479c1c717","text":"修复谚文 U+11A7 (TBASE) 的 NFC 重组错误（Diego Frias、Michael Paquier）§ 该字符被当作有效的 T 音节，但实际上并非如此，因此在规范化过程中被悄然吞掉。","title":"修复谚文 U+11A7 (TBASE) 的 NFC 重组错误","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["1e0458172","3805641cb","89e648498","9234e3337","a7e0e42a2","b32df590c"],"commit_groups":[["1e0458172","3805641cb","89e648498","9234e3337","a7e0e42a2","b32df590c"]],"commits":["1e0458172"],"cves":[],"db_id":"3af409a2d71c7fbd1a45975cdba31ea0","html":"\u003cp\u003e\n      避免不区分大小写的 \u003ccode\u003esynonym\u003c/code\u003e 词典可能截断输出词位（Jeff Davis）\u003ca href=\"https://postgr.es/c/1e0458172\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      如果折叠为小写增加了词位的字节长度，输出时会错误地将其截断为原来的字节长度。\n     \u003c/p\u003e","id":"14.24-c33079f2a44ffdbd","identity_text":"Avoid possible truncation of output lexemes in case-insensitive synonym dictionaries (Jeff Davis) If folding to lower case increased the byte length of a lexeme, it was incorrectly truncated to its original byte length when emitted.","part":"changes","patch_ids":["751e547292fa99c95c843d27d6c9593a"],"related_changes":[{"db_id":"347d8e16786f9262348eddb4e4ab7132","evidence":{"patch_ids":["751e547292fa99c95c843d27d6c9593a"],"same_day":true,"statement_hash":"c66911e6e36c7126e1b585143d9e9b87d38db4e29cfb38c6987eff4e2c4f70d3"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"避免不区分大小写的 synonym 词典可能截断输出词位","url":"/docs/compare/?release=18.6#18.6-3c978527782bcd11","version":"18.6"},{"db_id":"a4a88f042e4bc74a3646ee98fc6e3a95","evidence":{"patch_ids":["751e547292fa99c95c843d27d6c9593a"],"same_day":true,"statement_hash":"c66911e6e36c7126e1b585143d9e9b87d38db4e29cfb38c6987eff4e2c4f70d3"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"避免不区分大小写的 synonym 词典可能截断输出词位","url":"/docs/compare/?release=17.11#17.11-a4695342e5fc0fc7","version":"17.11"},{"db_id":"ae43518b0809db4841928b42a3de5142","evidence":{"patch_ids":["751e547292fa99c95c843d27d6c9593a"],"same_day":true,"statement_hash":"c66911e6e36c7126e1b585143d9e9b87d38db4e29cfb38c6987eff4e2c4f70d3"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"避免不区分大小写的 synonym 词典可能截断输出词位","url":"/docs/compare/?release=16.15#16.15-2163d6f45ee0d876","version":"16.15"},{"db_id":"0633548b5897af860062f0da29c48e44","evidence":{"patch_ids":["751e547292fa99c95c843d27d6c9593a"],"same_day":true,"statement_hash":"c66911e6e36c7126e1b585143d9e9b87d38db4e29cfb38c6987eff4e2c4f70d3"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"避免不区分大小写的 synonym 词典可能截断输出词位","url":"/docs/compare/?release=15.19#15.19-28d4f1c94a8ecc1a","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["751e547292fa99c95c843d27d6c9593a"],"same_day":true,"statement_hash":"c66911e6e36c7126e1b585143d9e9b87d38db4e29cfb38c6987eff4e2c4f70d3"},"rule":2,"target":"0633548b5897af860062f0da29c48e44","type":"equivalent"},{"evidence":{"patch_ids":["751e547292fa99c95c843d27d6c9593a"],"same_day":true,"statement_hash":"c66911e6e36c7126e1b585143d9e9b87d38db4e29cfb38c6987eff4e2c4f70d3"},"rule":2,"target":"347d8e16786f9262348eddb4e4ab7132","type":"equivalent"},{"evidence":{"patch_ids":["751e547292fa99c95c843d27d6c9593a"],"same_day":true,"statement_hash":"c66911e6e36c7126e1b585143d9e9b87d38db4e29cfb38c6987eff4e2c4f70d3"},"rule":2,"target":"a4a88f042e4bc74a3646ee98fc6e3a95","type":"equivalent"},{"evidence":{"patch_ids":["751e547292fa99c95c843d27d6c9593a"],"same_day":true,"statement_hash":"c66911e6e36c7126e1b585143d9e9b87d38db4e29cfb38c6987eff4e2c4f70d3"},"rule":2,"target":"ae43518b0809db4841928b42a3de5142","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["1e0458172"],"source_entry_id":"14.24/changes/039","source_hash":"367d80224e3198ae4dc785efbde3cfb934616f67fed56ea61d8f8a46a0e7e4b6","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"c66911e6e36c7126e1b585143d9e9b87d38db4e29cfb38c6987eff4e2c4f70d3","text":"避免不区分大小写的 synonym 词典可能截断输出词位（Jeff Davis）§ 如果折叠为小写增加了词位的字节长度，输出时会错误地将其截断为原来的字节长度。","title":"避免不区分大小写的 synonym 词典可能截断输出词位","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["203e238bb","259b627d5","273a3c776","74d3482f4","8b5580a05","b3f13c032"],"commit_groups":[["203e238bb","259b627d5","273a3c776","74d3482f4","8b5580a05","b3f13c032"]],"commits":["74d3482f4"],"cves":[],"db_id":"25a4f41e6e86c5076cca107fea29ef1d","html":"\u003cp\u003e\n      修复 \u003ccode\u003ehash_record_extended()\u003c/code\u003e 中的拼写错误（Man Zeng）\u003ca href=\"https://postgr.es/c/74d3482f4\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      代码未初始化传给 FunctionCallInvoke() 的第二个 isnull 参数。对于现有的核心内置扩展 hash 支持函数，这不会造成影响，因为它们不会检查该值。不过，如果扩展提供的 hash 函数检查\n      \u003ccode\u003ePG_ARGISNULL(1)\u003c/code\u003e，就可能受到影响。\n     \u003c/p\u003e","id":"14.24-fac08735b5c2435e","identity_text":"Fix typo in hash_record_extended() (Man Zeng) The code failed to initialize the second isnull argument passed to FunctionCallInvoke(). This is harmless for existing in-core extended hash support functions, which will not examine that value. However, extension-provided hash functions could be affected if they inspect PG_ARGISNULL(1).","part":"changes","patch_ids":["29a84f83d9835258ff987caab51900d5"],"related_changes":[{"db_id":"1a54434973bf348ac56bbd357db25e7a","evidence":{"patch_ids":["29a84f83d9835258ff987caab51900d5"],"same_day":true,"statement_hash":"6a481541d5459f5a423fe86368ee4362d85dac47eaf33158755dd903beff8a30"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 hash_record_extended() 中的拼写错误","url":"/docs/compare/?release=18.6#18.6-07aee184fcf9a835","version":"18.6"},{"db_id":"5f9c74e8a3fc194bfa4ae79b3e4f07c7","evidence":{"patch_ids":["29a84f83d9835258ff987caab51900d5"],"same_day":true,"statement_hash":"6a481541d5459f5a423fe86368ee4362d85dac47eaf33158755dd903beff8a30"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 hash_record_extended() 中的拼写错误","url":"/docs/compare/?release=17.11#17.11-f5ccad03da59d5de","version":"17.11"},{"db_id":"ece2673fe4b30003bf5bf840a25f59a4","evidence":{"patch_ids":["29a84f83d9835258ff987caab51900d5"],"same_day":true,"statement_hash":"6a481541d5459f5a423fe86368ee4362d85dac47eaf33158755dd903beff8a30"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 hash_record_extended() 中的拼写错误","url":"/docs/compare/?release=16.15#16.15-cb201ae319eda4b5","version":"16.15"},{"db_id":"3a78996c251f4fe686fe5fedcd3f9184","evidence":{"patch_ids":["29a84f83d9835258ff987caab51900d5"],"same_day":true,"statement_hash":"6a481541d5459f5a423fe86368ee4362d85dac47eaf33158755dd903beff8a30"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 hash_record_extended() 中的拼写错误","url":"/docs/compare/?release=15.19#15.19-366fd641b8a79f60","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["29a84f83d9835258ff987caab51900d5"],"same_day":true,"statement_hash":"6a481541d5459f5a423fe86368ee4362d85dac47eaf33158755dd903beff8a30"},"rule":2,"target":"1a54434973bf348ac56bbd357db25e7a","type":"equivalent"},{"evidence":{"patch_ids":["29a84f83d9835258ff987caab51900d5"],"same_day":true,"statement_hash":"6a481541d5459f5a423fe86368ee4362d85dac47eaf33158755dd903beff8a30"},"rule":2,"target":"3a78996c251f4fe686fe5fedcd3f9184","type":"equivalent"},{"evidence":{"patch_ids":["29a84f83d9835258ff987caab51900d5"],"same_day":true,"statement_hash":"6a481541d5459f5a423fe86368ee4362d85dac47eaf33158755dd903beff8a30"},"rule":2,"target":"5f9c74e8a3fc194bfa4ae79b3e4f07c7","type":"equivalent"},{"evidence":{"patch_ids":["29a84f83d9835258ff987caab51900d5"],"same_day":true,"statement_hash":"6a481541d5459f5a423fe86368ee4362d85dac47eaf33158755dd903beff8a30"},"rule":2,"target":"ece2673fe4b30003bf5bf840a25f59a4","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["74d3482f4"],"source_entry_id":"14.24/changes/040","source_hash":"0429842243c48924c0e01637187144bd5ca1837581203559b56040a0eefcc33f","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"6a481541d5459f5a423fe86368ee4362d85dac47eaf33158755dd903beff8a30","text":"修复 hash_record_extended() 中的拼写错误（Man Zeng）§ 代码未初始化传给 FunctionCallInvoke() 的第二个 isnull 参数。对于现有的核心内置扩展 hash 支持函数，这不会造成影响，因为它们不会检查该值。不过，如果扩展提供的 hash 函数检查 PG_ARGISNULL(1)，就可能受到影响。","title":"修复 hash_record_extended() 中的拼写错误","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["0115650de","0c06ebf12","2ddc45662","52af6fef4","6de480156","d39b9eed0","e8914ec22"],"commit_groups":[["0115650de","0c06ebf12","2ddc45662","52af6fef4","6de480156","d39b9eed0","e8914ec22"]],"commits":["0115650de"],"cves":[],"db_id":"1fb3283adc95d5350d7e43a295bb846c","html":"\u003cp\u003e\n      防止 \u003ccode\u003esatisfies_hash_partition()\u003c/code\u003e 在使用\n      \u003ccode\u003eVARIADIC NULL\u003c/code\u003e 时崩溃（Robert Haas）\u003ca href=\"https://postgr.es/c/0115650de\"\u003e§\u003c/a\u003e\n\u003c/p\u003e","id":"14.24-4654d9de568816b5","identity_text":"Prevent satisfies_hash_partition() from crashing with VARIADIC NULL (Robert Haas)","part":"changes","patch_ids":["a1fff8ec6956e6fe697219d698fc333c"],"related_changes":[{"db_id":"aca7b7cc0c6297fb6f870b60ad6c6eb2","evidence":{"patch_ids":["a1fff8ec6956e6fe697219d698fc333c"],"same_day":true,"statement_hash":"2c10eabfd2357642afd00af080282da33e338699d23c4fd63ebce1ed6b5d3de6"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"防止 satisfies_hash_partition() 在使用 VARIADIC NULL 时崩溃","url":"/docs/compare/?release=18.6#18.6-8e6a8684fc76928f","version":"18.6"},{"db_id":"393be0bc06aa5c29057eb4def7239bd8","evidence":{"patch_ids":["a1fff8ec6956e6fe697219d698fc333c"],"same_day":true,"statement_hash":"2c10eabfd2357642afd00af080282da33e338699d23c4fd63ebce1ed6b5d3de6"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"防止 satisfies_hash_partition() 在使用 VARIADIC NULL 时崩溃","url":"/docs/compare/?release=17.11#17.11-f0697d05fabe6ce7","version":"17.11"},{"db_id":"588ad857d225574ba2a655f6d141dfd0","evidence":{"patch_ids":["a1fff8ec6956e6fe697219d698fc333c"],"same_day":true,"statement_hash":"2c10eabfd2357642afd00af080282da33e338699d23c4fd63ebce1ed6b5d3de6"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"防止 satisfies_hash_partition() 在使用 VARIADIC NULL 时崩溃","url":"/docs/compare/?release=16.15#16.15-1645ee8abe170a88","version":"16.15"},{"db_id":"250fe82e174ea43c46f699d38a0bc047","evidence":{"patch_ids":["a1fff8ec6956e6fe697219d698fc333c"],"same_day":true,"statement_hash":"2c10eabfd2357642afd00af080282da33e338699d23c4fd63ebce1ed6b5d3de6"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"防止 satisfies_hash_partition() 在使用 VARIADIC NULL 时崩溃","url":"/docs/compare/?release=15.19#15.19-e8e1f41131f43e88","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["a1fff8ec6956e6fe697219d698fc333c"],"same_day":true,"statement_hash":"2c10eabfd2357642afd00af080282da33e338699d23c4fd63ebce1ed6b5d3de6"},"rule":2,"target":"250fe82e174ea43c46f699d38a0bc047","type":"equivalent"},{"evidence":{"patch_ids":["a1fff8ec6956e6fe697219d698fc333c"],"same_day":true,"statement_hash":"2c10eabfd2357642afd00af080282da33e338699d23c4fd63ebce1ed6b5d3de6"},"rule":2,"target":"393be0bc06aa5c29057eb4def7239bd8","type":"equivalent"},{"evidence":{"patch_ids":["a1fff8ec6956e6fe697219d698fc333c"],"same_day":true,"statement_hash":"2c10eabfd2357642afd00af080282da33e338699d23c4fd63ebce1ed6b5d3de6"},"rule":2,"target":"588ad857d225574ba2a655f6d141dfd0","type":"equivalent"},{"evidence":{"patch_ids":["a1fff8ec6956e6fe697219d698fc333c"],"same_day":true,"statement_hash":"2c10eabfd2357642afd00af080282da33e338699d23c4fd63ebce1ed6b5d3de6"},"rule":2,"target":"aca7b7cc0c6297fb6f870b60ad6c6eb2","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["0115650de"],"source_entry_id":"14.24/changes/041","source_hash":"73d5c74c56d50dfef75c245567cea790060524a89ec7cb85d998f0facec43820","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"2c10eabfd2357642afd00af080282da33e338699d23c4fd63ebce1ed6b5d3de6","text":"防止 satisfies_hash_partition() 在使用 VARIADIC NULL 时崩溃（Robert Haas）§","title":"防止 satisfies_hash_partition() 在使用 VARIADIC NULL 时崩溃","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["0626fbfeb","262cc4df2","b3a86eb6d","c5194139c","ce6bf3cd1","ed5ca5828"],"commit_groups":[["0626fbfeb","262cc4df2","b3a86eb6d","c5194139c","ce6bf3cd1","ed5ca5828"]],"commits":["262cc4df2"],"cves":[],"db_id":"7e8ee08fd9d07b25538b838699962287","html":"\u003cp\u003e\n      使 \u003ccode\u003etsvector_filter()\u003c/code\u003e 及相关函数以更清晰且一致的方式报告无效权重错误（Ewan Young）\u003ca href=\"https://postgr.es/c/262cc4df2\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      特别是，以八进制形式（\u003ccode\u003e\\\u003cem\u003e\u003ccode\u003ennn\u003c/code\u003e\u003c/em\u003e\u003c/code\u003e）报告不是可打印\n      ASCII 字符的权重字符，就像 \u003ccode\u003echarout()\u003c/code\u003e 对它们的呈现方式一样。这可以避免生成编码无效的错误消息。\n     \u003c/p\u003e","id":"14.24-bcb42ee3c83ec50e","identity_text":"Report invalid-weight errors more cleanly and consistently in tsvector_filter() and allied functions (Ewan Young) In particular, report weight characters that are not printable ASCII in octal form (\\nnn), as charout() would render them. This avoids possibly producing an invalidly-encoded error message.","part":"changes","patch_ids":["108ef859ecda6eaa371bc79609379d31"],"related_changes":[{"db_id":"7d5a91e54ac5103d6bf03024f3af935e","evidence":{"patch_ids":["108ef859ecda6eaa371bc79609379d31"],"same_day":true,"statement_hash":"b23812182f466ab2843cf43ee7c0e1ecacecfe15dece91513947714713458af8"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"使 tsvector_filter() 及相关函数以更清晰且一致的方式报告无效权重错误","url":"/docs/compare/?release=18.6#18.6-9981c3dd5925e5fe","version":"18.6"},{"db_id":"4d393fd29403237b560622e62e4ee4e1","evidence":{"patch_ids":["108ef859ecda6eaa371bc79609379d31"],"same_day":true,"statement_hash":"b23812182f466ab2843cf43ee7c0e1ecacecfe15dece91513947714713458af8"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"使 tsvector_filter() 及相关函数以更清晰且一致的方式报告无效权重错误","url":"/docs/compare/?release=17.11#17.11-39600e2a322b65b2","version":"17.11"},{"db_id":"bdf6d20897614c30387f78e16ddf9d3d","evidence":{"patch_ids":["108ef859ecda6eaa371bc79609379d31"],"same_day":true,"statement_hash":"b23812182f466ab2843cf43ee7c0e1ecacecfe15dece91513947714713458af8"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"使 tsvector_filter() 及相关函数以更清晰且一致的方式报告无效权重错误","url":"/docs/compare/?release=16.15#16.15-e53a6b90ce1c01cf","version":"16.15"},{"db_id":"1b9097ec2e33d310c015aacb80137ff1","evidence":{"patch_ids":["108ef859ecda6eaa371bc79609379d31"],"same_day":true,"statement_hash":"b23812182f466ab2843cf43ee7c0e1ecacecfe15dece91513947714713458af8"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"使 tsvector_filter() 及相关函数以更清晰且一致的方式报告无效权重错误","url":"/docs/compare/?release=15.19#15.19-302634f0f7a6cdc8","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["108ef859ecda6eaa371bc79609379d31"],"same_day":true,"statement_hash":"b23812182f466ab2843cf43ee7c0e1ecacecfe15dece91513947714713458af8"},"rule":2,"target":"1b9097ec2e33d310c015aacb80137ff1","type":"equivalent"},{"evidence":{"patch_ids":["108ef859ecda6eaa371bc79609379d31"],"same_day":true,"statement_hash":"b23812182f466ab2843cf43ee7c0e1ecacecfe15dece91513947714713458af8"},"rule":2,"target":"4d393fd29403237b560622e62e4ee4e1","type":"equivalent"},{"evidence":{"patch_ids":["108ef859ecda6eaa371bc79609379d31"],"same_day":true,"statement_hash":"b23812182f466ab2843cf43ee7c0e1ecacecfe15dece91513947714713458af8"},"rule":2,"target":"7d5a91e54ac5103d6bf03024f3af935e","type":"equivalent"},{"evidence":{"patch_ids":["108ef859ecda6eaa371bc79609379d31"],"same_day":true,"statement_hash":"b23812182f466ab2843cf43ee7c0e1ecacecfe15dece91513947714713458af8"},"rule":2,"target":"bdf6d20897614c30387f78e16ddf9d3d","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["262cc4df2"],"source_entry_id":"14.24/changes/042","source_hash":"aaf1895e2fe93cb42d18813a152d1ee1cef86e3008f96a37e0ccb6152548e641","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"b23812182f466ab2843cf43ee7c0e1ecacecfe15dece91513947714713458af8","text":"使 tsvector_filter() 及相关函数以更清晰且一致的方式报告无效权重错误（Ewan Young）§ 特别是，以八进制形式（\\nnn）报告不是可打印 ASCII 字符的权重字符，就像 charout() 对它们的呈现方式一样。这可以避免生成编码无效的错误消息。","title":"使 tsvector_filter() 及相关函数以更清晰且一致的方式报告无效权重错误","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["0b74df66f","0d145be2c","174076601","1d8c72b2e","41876c8d7","4c777d6dd","6c08cbb7a","8bf257aeb","940916549","9618e790c","a17f39aa2","fac26fd41"],"commit_groups":[["0b74df66f","0d145be2c","940916549","9618e790c","a17f39aa2","fac26fd41"],["174076601","1d8c72b2e","41876c8d7","4c777d6dd","6c08cbb7a","8bf257aeb"]],"commits":["41876c8d7","a17f39aa2"],"cves":[],"db_id":"d35a51c2f2bcdba360c287240fa92b7a","html":"\u003cp\u003e\n      修复 \u003ccode\u003expath()\u003c/code\u003e 对命名空间节点处理不当的问题（Michael Paquier）\u003ca href=\"https://postgr.es/c/41876c8d7\"\u003e§\u003c/a\u003e\n\u003ca href=\"https://postgr.es/c/a17f39aa2\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      此修复避免了意外的\u003cspan\u003e“\u003cspan\u003ecould not copy node\u003c/span\u003e”\u003c/span\u003e错误。\n     \u003c/p\u003e","id":"14.24-c7c54909a4e7d896","identity_text":"Fix mishandling of namespace nodes in xpath() (Michael Paquier) This fix avoids an unexpected could not copy node error.","part":"changes","patch_ids":["702367d070cdeca227ba0e4197a518e9","7df9ed5e8663765f5ca836c89d33f03d"],"related_changes":[{"db_id":"9d61a6c023f441c2a3883f44804564ca","evidence":{"patch_ids":["702367d070cdeca227ba0e4197a518e9","7df9ed5e8663765f5ca836c89d33f03d"],"same_day":true,"statement_hash":"2ab954d63190bf0ecdc409c287a734a5049667a3d9db9dc5337f82a35275db37"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 xpath() 对命名空间节点处理不当的问题","url":"/docs/compare/?release=18.6#18.6-a9563797105c5be3","version":"18.6"},{"db_id":"a3cd7c73a5609ef9df5a2f2035307742","evidence":{"patch_ids":["702367d070cdeca227ba0e4197a518e9","7df9ed5e8663765f5ca836c89d33f03d"],"same_day":true,"statement_hash":"2ab954d63190bf0ecdc409c287a734a5049667a3d9db9dc5337f82a35275db37"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 xpath() 对命名空间节点处理不当的问题","url":"/docs/compare/?release=17.11#17.11-aea52062a31be5cf","version":"17.11"},{"db_id":"da05c3ee44af186be3d4b5b7c6f0afe4","evidence":{"patch_ids":["702367d070cdeca227ba0e4197a518e9","7df9ed5e8663765f5ca836c89d33f03d"],"same_day":true,"statement_hash":"2ab954d63190bf0ecdc409c287a734a5049667a3d9db9dc5337f82a35275db37"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 xpath() 对命名空间节点处理不当的问题","url":"/docs/compare/?release=16.15#16.15-3d663bf2b0295097","version":"16.15"},{"db_id":"c9299f10a2be68af64d82e072893d1fa","evidence":{"patch_ids":["702367d070cdeca227ba0e4197a518e9","7df9ed5e8663765f5ca836c89d33f03d"],"same_day":true,"statement_hash":"2ab954d63190bf0ecdc409c287a734a5049667a3d9db9dc5337f82a35275db37"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 xpath() 对命名空间节点处理不当的问题","url":"/docs/compare/?release=15.19#15.19-4ef656410724db83","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["702367d070cdeca227ba0e4197a518e9","7df9ed5e8663765f5ca836c89d33f03d"],"same_day":true,"statement_hash":"2ab954d63190bf0ecdc409c287a734a5049667a3d9db9dc5337f82a35275db37"},"rule":2,"target":"9d61a6c023f441c2a3883f44804564ca","type":"equivalent"},{"evidence":{"patch_ids":["702367d070cdeca227ba0e4197a518e9","7df9ed5e8663765f5ca836c89d33f03d"],"same_day":true,"statement_hash":"2ab954d63190bf0ecdc409c287a734a5049667a3d9db9dc5337f82a35275db37"},"rule":2,"target":"a3cd7c73a5609ef9df5a2f2035307742","type":"equivalent"},{"evidence":{"patch_ids":["702367d070cdeca227ba0e4197a518e9","7df9ed5e8663765f5ca836c89d33f03d"],"same_day":true,"statement_hash":"2ab954d63190bf0ecdc409c287a734a5049667a3d9db9dc5337f82a35275db37"},"rule":2,"target":"c9299f10a2be68af64d82e072893d1fa","type":"equivalent"},{"evidence":{"patch_ids":["702367d070cdeca227ba0e4197a518e9","7df9ed5e8663765f5ca836c89d33f03d"],"same_day":true,"statement_hash":"2ab954d63190bf0ecdc409c287a734a5049667a3d9db9dc5337f82a35275db37"},"rule":2,"target":"da05c3ee44af186be3d4b5b7c6f0afe4","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["41876c8d7","a17f39aa2"],"source_entry_id":"14.24/changes/043","source_hash":"e2becf737b7789657aa60502772e8b8e97f1c581662a695feedb4a72dc87724a","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"2ab954d63190bf0ecdc409c287a734a5049667a3d9db9dc5337f82a35275db37","text":"修复 xpath() 对命名空间节点处理不当的问题（Michael Paquier）§ § 此修复避免了意外的“could not copy node”错误。","title":"修复 xpath() 对命名空间节点处理不当的问题","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["1daeef6e0","364014327","8af173e28"],"commit_groups":[["1daeef6e0","364014327","8af173e28"]],"commits":["364014327"],"cves":[],"db_id":"785f3d4eda15313fdf7dd968a431ca8b","html":"\u003cp\u003e\n      即使未提供任何变量，也将未定义的 jsonpath 变量作为错误处理（Andrey Rachitskiy）\u003ca href=\"https://postgr.es/c/364014327\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n\u003ccode\u003ejsonb\u003c/code\u003e 的 \u003ccode\u003e@?\u003c/code\u003e 和\n      \u003ccode\u003e@@\u003c/code\u003e 操作符无法提供任何变量供其 jsonpath 表达式使用。此代码路径错误地将未知的 jsonpath 变量视为 JSON null，而没有按预期抛出错误。除了行为不符合预期之外，此错误还可能导致无上限的内存消耗。\n     \u003c/p\u003e","id":"14.24-c7af0ed7c237b35f","identity_text":"Treat an undefined jsonpath variable as an error even when no variables are supplied (Andrey Rachitskiy) The jsonb @? and @@ operators cannot supply any variables to be used in their jsonpath expressions. This code path erroneously treated an unknown jsonpath variable as a JSON null, rather than raising an error as expected. Aside from not being the expected behavior, this mistake could result in unbounded memory consumption.","part":"changes","patch_ids":["195a75aad48a2657a00cc4f8e33467f4"],"related_changes":[{"db_id":"7f2360c19a587695c42355e9ab9b03d7","evidence":{"patch_ids":["195a75aad48a2657a00cc4f8e33467f4"],"same_day":true,"statement_hash":"08f130d026c868f1a809fca0aba8cd4cf7328ba492092cb319d7058dd32ed5e2"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"即使未提供任何变量，也将未定义的 jsonpath 变量作为错误处理","url":"/docs/compare/?release=16.15#16.15-547a8e38738139c4","version":"16.15"},{"db_id":"a55c23b179c22bb6e19cea0d1d3cb7f1","evidence":{"patch_ids":["195a75aad48a2657a00cc4f8e33467f4"],"same_day":true,"statement_hash":"08f130d026c868f1a809fca0aba8cd4cf7328ba492092cb319d7058dd32ed5e2"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"即使未提供任何变量，也将未定义的 jsonpath 变量作为错误处理","url":"/docs/compare/?release=15.19#15.19-776ae1444b6bc6e2","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["195a75aad48a2657a00cc4f8e33467f4"],"same_day":true,"statement_hash":"08f130d026c868f1a809fca0aba8cd4cf7328ba492092cb319d7058dd32ed5e2"},"rule":2,"target":"7f2360c19a587695c42355e9ab9b03d7","type":"equivalent"},{"evidence":{"patch_ids":["195a75aad48a2657a00cc4f8e33467f4"],"same_day":true,"statement_hash":"08f130d026c868f1a809fca0aba8cd4cf7328ba492092cb319d7058dd32ed5e2"},"rule":2,"target":"a55c23b179c22bb6e19cea0d1d3cb7f1","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["364014327"],"source_entry_id":"14.24/changes/044","source_hash":"580bc29dc95f8ca4a21a65cc6447e4397a62dbd267afbc18bf18005a37e85ec1","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"08f130d026c868f1a809fca0aba8cd4cf7328ba492092cb319d7058dd32ed5e2","text":"即使未提供任何变量，也将未定义的 jsonpath 变量作为错误处理（Andrey Rachitskiy）§ jsonb 的 @? 和 @@ 操作符无法提供任何变量供其 jsonpath 表达式使用。此代码路径错误地将未知的 jsonpath 变量视为 JSON null，而没有按预期抛出错误。除了行为不符合预期之外，此错误还可能导致无上限的内存消耗。","title":"即使未提供任何变量，也将未定义的 jsonpath 变量作为错误处理","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["1416f304d","6298a41b4","7746f7492","86f42357c","b4dfae2ff","d782c97e1","fec40878c"],"commit_groups":[["1416f304d","6298a41b4","7746f7492","86f42357c","b4dfae2ff","d782c97e1","fec40878c"]],"commits":["fec40878c"],"cves":[],"db_id":"5ddb2b6ecf3b95db0488f70dff6ce420","html":"\u003cp\u003e\n      避免将最小的 \u003ccode\u003emoney\u003c/code\u003e 值除以 -1 时出现依赖机器的行为（Andrey Rachitskiy）\u003ca href=\"https://postgr.es/c/fec40878c\"\u003e§\u003c/a\u003e\n\u003c/p\u003e","id":"14.24-f25ef71b5a47bb38","identity_text":"Avoid machine-dependent behavior when dividing the smallest possible money value by -1 (Andrey Rachitskiy)","part":"changes","patch_ids":["fe8aedb6e19e256e063c5525f5021a96"],"related_changes":[{"db_id":"ee7676270a36bf258a65c89f89fa44af","evidence":{"patch_ids":["fe8aedb6e19e256e063c5525f5021a96"],"same_day":true,"statement_hash":"5be6e13596b05605cc072eb289af3ca913d55550b31c1733b3d9a107ef4f6567"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"避免将最小的 money 值除以 -1 时出现依赖机器的行为","url":"/docs/compare/?release=18.6#18.6-da37578bb1901f30","version":"18.6"},{"db_id":"ab04f82d05155d2f24611a645ef67570","evidence":{"patch_ids":["fe8aedb6e19e256e063c5525f5021a96"],"same_day":true,"statement_hash":"5be6e13596b05605cc072eb289af3ca913d55550b31c1733b3d9a107ef4f6567"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"避免将最小的 money 值除以 -1 时出现依赖机器的行为","url":"/docs/compare/?release=17.11#17.11-7b7ee8e84aced4b2","version":"17.11"},{"db_id":"ad37c4809a78b0946b550655ff98efbb","evidence":{"patch_ids":["fe8aedb6e19e256e063c5525f5021a96"],"same_day":true,"statement_hash":"5be6e13596b05605cc072eb289af3ca913d55550b31c1733b3d9a107ef4f6567"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"避免将最小的 money 值除以 -1 时出现依赖机器的行为","url":"/docs/compare/?release=16.15#16.15-f8110322fae804b5","version":"16.15"},{"db_id":"606f8159e0d16f836c764d3cf06215f0","evidence":{"patch_ids":["fe8aedb6e19e256e063c5525f5021a96"],"same_day":true,"statement_hash":"5be6e13596b05605cc072eb289af3ca913d55550b31c1733b3d9a107ef4f6567"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"避免将最小的 money 值除以 -1 时出现依赖机器的行为","url":"/docs/compare/?release=15.19#15.19-97d0dfa81713af6e","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["fe8aedb6e19e256e063c5525f5021a96"],"same_day":true,"statement_hash":"5be6e13596b05605cc072eb289af3ca913d55550b31c1733b3d9a107ef4f6567"},"rule":2,"target":"606f8159e0d16f836c764d3cf06215f0","type":"equivalent"},{"evidence":{"patch_ids":["fe8aedb6e19e256e063c5525f5021a96"],"same_day":true,"statement_hash":"5be6e13596b05605cc072eb289af3ca913d55550b31c1733b3d9a107ef4f6567"},"rule":2,"target":"ab04f82d05155d2f24611a645ef67570","type":"equivalent"},{"evidence":{"patch_ids":["fe8aedb6e19e256e063c5525f5021a96"],"same_day":true,"statement_hash":"5be6e13596b05605cc072eb289af3ca913d55550b31c1733b3d9a107ef4f6567"},"rule":2,"target":"ad37c4809a78b0946b550655ff98efbb","type":"equivalent"},{"evidence":{"patch_ids":["fe8aedb6e19e256e063c5525f5021a96"],"same_day":true,"statement_hash":"5be6e13596b05605cc072eb289af3ca913d55550b31c1733b3d9a107ef4f6567"},"rule":2,"target":"ee7676270a36bf258a65c89f89fa44af","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["fec40878c"],"source_entry_id":"14.24/changes/045","source_hash":"9172c88abce2247eb48bda607a4da478ce151e70b3da2dd0cb49cd828b8cd478","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"5be6e13596b05605cc072eb289af3ca913d55550b31c1733b3d9a107ef4f6567","text":"避免将最小的 money 值除以 -1 时出现依赖机器的行为（Andrey Rachitskiy）§","title":"避免将最小的 money 值除以 -1 时出现依赖机器的行为","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["025228104","4e68b7e29","634a8dcb8","81b1e7916","83336e3ed","dda622edc","df8407d7d"],"commit_groups":[["025228104","4e68b7e29","634a8dcb8","81b1e7916","83336e3ed","dda622edc","df8407d7d"]],"commits":["dda622edc"],"cves":[],"db_id":"0c1ad5d57b9bccac58da6089309d8ba7","html":"\u003cp\u003e\n      修复为文本检索词典创建缓存条目的过程中发生内存不足后导致的崩溃（Tom Lane）\u003ca href=\"https://postgr.es/c/dda622edc\"\u003e§\u003c/a\u003e\n\u003c/p\u003e","id":"14.24-f3e3230fd7374279","identity_text":"Fix crash after out-of-memory failure partway through creation of a cache entry for a text search dictionary (Tom Lane)","part":"changes","patch_ids":["3c3b45b5ca2c2212b9a36ad4558d619a"],"related_changes":[{"db_id":"c02824b6af588491530569e4ec99fe1c","evidence":{"patch_ids":["3c3b45b5ca2c2212b9a36ad4558d619a"],"same_day":true,"statement_hash":"bba5519e5078b4a32c843646cda9fbb9119cc591d67acb786924d35be185c1e2"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复为文本检索词典创建缓存条目的过程中发生内存不足后导致的崩溃","url":"/docs/compare/?release=18.6#18.6-8f91828547f09bb4","version":"18.6"},{"db_id":"b1fc0de5d2d692ed4af6bcafccb53961","evidence":{"patch_ids":["3c3b45b5ca2c2212b9a36ad4558d619a"],"same_day":true,"statement_hash":"bba5519e5078b4a32c843646cda9fbb9119cc591d67acb786924d35be185c1e2"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复为文本检索词典创建缓存条目的过程中发生内存不足后导致的崩溃","url":"/docs/compare/?release=17.11#17.11-84e7ed3f45fec194","version":"17.11"},{"db_id":"7df44ef8cf990bb0e618cec50c164949","evidence":{"patch_ids":["3c3b45b5ca2c2212b9a36ad4558d619a"],"same_day":true,"statement_hash":"bba5519e5078b4a32c843646cda9fbb9119cc591d67acb786924d35be185c1e2"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复为文本检索词典创建缓存条目的过程中发生内存不足后导致的崩溃","url":"/docs/compare/?release=16.15#16.15-23f510e2538b04c8","version":"16.15"},{"db_id":"b0c7268f189c5a8d74b8439d4bc7c5d9","evidence":{"patch_ids":["3c3b45b5ca2c2212b9a36ad4558d619a"],"same_day":true,"statement_hash":"bba5519e5078b4a32c843646cda9fbb9119cc591d67acb786924d35be185c1e2"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复为文本检索词典创建缓存条目的过程中发生内存不足后导致的崩溃","url":"/docs/compare/?release=15.19#15.19-a430cbb8698c9246","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["3c3b45b5ca2c2212b9a36ad4558d619a"],"same_day":true,"statement_hash":"bba5519e5078b4a32c843646cda9fbb9119cc591d67acb786924d35be185c1e2"},"rule":2,"target":"7df44ef8cf990bb0e618cec50c164949","type":"equivalent"},{"evidence":{"patch_ids":["3c3b45b5ca2c2212b9a36ad4558d619a"],"same_day":true,"statement_hash":"bba5519e5078b4a32c843646cda9fbb9119cc591d67acb786924d35be185c1e2"},"rule":2,"target":"b0c7268f189c5a8d74b8439d4bc7c5d9","type":"equivalent"},{"evidence":{"patch_ids":["3c3b45b5ca2c2212b9a36ad4558d619a"],"same_day":true,"statement_hash":"bba5519e5078b4a32c843646cda9fbb9119cc591d67acb786924d35be185c1e2"},"rule":2,"target":"b1fc0de5d2d692ed4af6bcafccb53961","type":"equivalent"},{"evidence":{"patch_ids":["3c3b45b5ca2c2212b9a36ad4558d619a"],"same_day":true,"statement_hash":"bba5519e5078b4a32c843646cda9fbb9119cc591d67acb786924d35be185c1e2"},"rule":2,"target":"c02824b6af588491530569e4ec99fe1c","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["dda622edc"],"source_entry_id":"14.24/changes/046","source_hash":"2a36db6bcbd20c1a51e1a8bf296870c7554dd3bf73b078265205b2d3394ac401","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"bba5519e5078b4a32c843646cda9fbb9119cc591d67acb786924d35be185c1e2","text":"修复为文本检索词典创建缓存条目的过程中发生内存不足后导致的崩溃（Tom Lane）§","title":"修复为文本检索词典创建缓存条目的过程中发生内存不足后导致的崩溃","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["0fb88979b","330a72052","3fe4062cc","444038bb7","4689ea9ce","5fdea3aa3","cfc720ef4"],"commit_groups":[["0fb88979b","330a72052","3fe4062cc","444038bb7","4689ea9ce","5fdea3aa3","cfc720ef4"]],"commits":["cfc720ef4"],"cves":[],"db_id":"764e3f0a6b15565637fa481647bae444","html":"\u003cp\u003e\n      修复处理格式错误的 ispell/hunspell 词典文件时的内存安全缺陷（Andrey Rachitskiy）\u003ca href=\"https://postgr.es/c/cfc720ef4\"\u003e§\u003c/a\u003e\n\u003c/p\u003e","id":"14.24-88bcd2945f60cd6c","identity_text":"Fix memory-safety bugs in processing of incorrect ispell/hunspell dictionary files (Andrey Rachitskiy)","part":"changes","patch_ids":["a2481aa7491246722b292cb1e96c16e2"],"related_changes":[{"db_id":"704f65f60aac8a5ed9ba34cc041d5717","evidence":{"patch_ids":["a2481aa7491246722b292cb1e96c16e2"],"same_day":true,"statement_hash":"188f51f4de54b27a68f6be9927610ed299c71a8aed01714563e401acac778944"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复处理格式错误的 ispell/hunspell 词典文件时的内存安全缺陷","url":"/docs/compare/?release=18.6#18.6-df42fd80a3fef364","version":"18.6"},{"db_id":"5e12745b9a23fea83bd8ffdb594c44cb","evidence":{"patch_ids":["a2481aa7491246722b292cb1e96c16e2"],"same_day":true,"statement_hash":"188f51f4de54b27a68f6be9927610ed299c71a8aed01714563e401acac778944"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复处理格式错误的 ispell/hunspell 词典文件时的内存安全缺陷","url":"/docs/compare/?release=17.11#17.11-ce317c73e36b1b1b","version":"17.11"},{"db_id":"77ab5557c03ca1e42e47d51eb237608a","evidence":{"patch_ids":["a2481aa7491246722b292cb1e96c16e2"],"same_day":true,"statement_hash":"188f51f4de54b27a68f6be9927610ed299c71a8aed01714563e401acac778944"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复处理格式错误的 ispell/hunspell 词典文件时的内存安全缺陷","url":"/docs/compare/?release=16.15#16.15-9a0f56094a25e9db","version":"16.15"},{"db_id":"bff681fe60683158629758d3a37c8488","evidence":{"patch_ids":["a2481aa7491246722b292cb1e96c16e2"],"same_day":true,"statement_hash":"188f51f4de54b27a68f6be9927610ed299c71a8aed01714563e401acac778944"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复处理格式错误的 ispell/hunspell 词典文件时的内存安全缺陷","url":"/docs/compare/?release=15.19#15.19-12f2c81d2dc1af7f","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["a2481aa7491246722b292cb1e96c16e2"],"same_day":true,"statement_hash":"188f51f4de54b27a68f6be9927610ed299c71a8aed01714563e401acac778944"},"rule":2,"target":"5e12745b9a23fea83bd8ffdb594c44cb","type":"equivalent"},{"evidence":{"patch_ids":["a2481aa7491246722b292cb1e96c16e2"],"same_day":true,"statement_hash":"188f51f4de54b27a68f6be9927610ed299c71a8aed01714563e401acac778944"},"rule":2,"target":"704f65f60aac8a5ed9ba34cc041d5717","type":"equivalent"},{"evidence":{"patch_ids":["a2481aa7491246722b292cb1e96c16e2"],"same_day":true,"statement_hash":"188f51f4de54b27a68f6be9927610ed299c71a8aed01714563e401acac778944"},"rule":2,"target":"77ab5557c03ca1e42e47d51eb237608a","type":"equivalent"},{"evidence":{"patch_ids":["a2481aa7491246722b292cb1e96c16e2"],"same_day":true,"statement_hash":"188f51f4de54b27a68f6be9927610ed299c71a8aed01714563e401acac778944"},"rule":2,"target":"bff681fe60683158629758d3a37c8488","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["cfc720ef4"],"source_entry_id":"14.24/changes/047","source_hash":"788f1478d3473638d0aba5c22207be9b16d455b33e6d1de197a5c227f91da32c","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"188f51f4de54b27a68f6be9927610ed299c71a8aed01714563e401acac778944","text":"修复处理格式错误的 ispell/hunspell 词典文件时的内存安全缺陷（Andrey Rachitskiy）§","title":"修复处理格式错误的 ispell/hunspell 词典文件时的内存安全缺陷","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["006ac761e","15fd7a3e2","70dad584e","7123abab7","7becb647d","8a045f760","ba5e46329"],"commit_groups":[["006ac761e","15fd7a3e2","70dad584e","7123abab7","7becb647d","8a045f760","ba5e46329"]],"commits":["15fd7a3e2"],"cves":[],"db_id":"814dbd746257f327d953bc1cef61300f","html":"\u003cp\u003e\n      在清理 GIN 索引倒排树期间响应查询取消并遵守清理延迟（Paul Kim、Alexander Korotkov）\u003ca href=\"https://postgr.es/c/15fd7a3e2\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      常见值的倒排树可能很大，因此遗漏这项检查可能导致清理运行很长时间后才注意到中断。\n     \u003c/p\u003e","id":"14.24-25f9d07b0fe76365","identity_text":"Honor query cancel and vacuum delay during GIN index posting-tree cleanup (Paul Kim, Alexander Korotkov) The posting tree for a common value can be large, so that this missed check could allow vacuum to run for a long time before noticing an interrupt.","part":"changes","patch_ids":["5737ead0e5ff1d380903a73cc5289899"],"related_changes":[{"db_id":"5ae3f0e86d0ce40099b20e708d75c4df","evidence":{"patch_ids":["5737ead0e5ff1d380903a73cc5289899"],"same_day":true,"statement_hash":"dbe0ee194244f00d3dbdcf97c73698ed65ff34b62bead922d8670ce2d3ad820b"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"在清理 GIN 索引倒排树期间响应查询取消并遵守清理延迟","url":"/docs/compare/?release=18.6#18.6-06642c9e897515be","version":"18.6"},{"db_id":"95dd23cd66ca5f13741dbc751bd94f78","evidence":{"patch_ids":["5737ead0e5ff1d380903a73cc5289899"],"same_day":true,"statement_hash":"dbe0ee194244f00d3dbdcf97c73698ed65ff34b62bead922d8670ce2d3ad820b"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"在清理 GIN 索引倒排树期间响应查询取消并遵守清理延迟","url":"/docs/compare/?release=17.11#17.11-69bd1a00ee81086e","version":"17.11"},{"db_id":"409fe91bb94144927c72c3c45b46a6de","evidence":{"patch_ids":["5737ead0e5ff1d380903a73cc5289899"],"same_day":true,"statement_hash":"dbe0ee194244f00d3dbdcf97c73698ed65ff34b62bead922d8670ce2d3ad820b"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"在清理 GIN 索引倒排树期间响应查询取消并遵守清理延迟","url":"/docs/compare/?release=16.15#16.15-554df1ef2961c27f","version":"16.15"},{"db_id":"49ebdb578d55efc3f72704dda719fc23","evidence":{"patch_ids":["5737ead0e5ff1d380903a73cc5289899"],"same_day":true,"statement_hash":"dbe0ee194244f00d3dbdcf97c73698ed65ff34b62bead922d8670ce2d3ad820b"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"在清理 GIN 索引倒排树期间响应查询取消并遵守清理延迟","url":"/docs/compare/?release=15.19#15.19-8a26ce7d87732222","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["5737ead0e5ff1d380903a73cc5289899"],"same_day":true,"statement_hash":"dbe0ee194244f00d3dbdcf97c73698ed65ff34b62bead922d8670ce2d3ad820b"},"rule":2,"target":"409fe91bb94144927c72c3c45b46a6de","type":"equivalent"},{"evidence":{"patch_ids":["5737ead0e5ff1d380903a73cc5289899"],"same_day":true,"statement_hash":"dbe0ee194244f00d3dbdcf97c73698ed65ff34b62bead922d8670ce2d3ad820b"},"rule":2,"target":"49ebdb578d55efc3f72704dda719fc23","type":"equivalent"},{"evidence":{"patch_ids":["5737ead0e5ff1d380903a73cc5289899"],"same_day":true,"statement_hash":"dbe0ee194244f00d3dbdcf97c73698ed65ff34b62bead922d8670ce2d3ad820b"},"rule":2,"target":"5ae3f0e86d0ce40099b20e708d75c4df","type":"equivalent"},{"evidence":{"patch_ids":["5737ead0e5ff1d380903a73cc5289899"],"same_day":true,"statement_hash":"dbe0ee194244f00d3dbdcf97c73698ed65ff34b62bead922d8670ce2d3ad820b"},"rule":2,"target":"95dd23cd66ca5f13741dbc751bd94f78","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["15fd7a3e2"],"source_entry_id":"14.24/changes/048","source_hash":"926bfdb54cb02673e01455699fda102541226e669ac9b7d79c7210f1483ee0c6","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"dbe0ee194244f00d3dbdcf97c73698ed65ff34b62bead922d8670ce2d3ad820b","text":"在清理 GIN 索引倒排树期间响应查询取消并遵守清理延迟（Paul Kim、Alexander Korotkov）§ 常见值的倒排树可能很大，因此遗漏这项检查可能导致清理运行很长时间后才注意到中断。","title":"在清理 GIN 索引倒排树期间响应查询取消并遵守清理延迟","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["126141425","1d4c81ad6","355faed5a","959b7fa2c","c9ea37231","e4ad22eb0","e58192546"],"commit_groups":[["126141425","1d4c81ad6","355faed5a","959b7fa2c","c9ea37231","e4ad22eb0","e58192546"]],"commits":["e4ad22eb0"],"cves":[],"db_id":"14d92270ba44127134ec95d6dc3f7106","html":"\u003cp\u003e\n      修复 GiST 和 SP-GiST 仅索引扫描期间可能错误解码索引元组的问题（Peter Geoghegan）\u003ca href=\"https://postgr.es/c/e4ad22eb0\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      此错误可能导致仅索引扫描计划输出损坏的数据。唯一受影响的核心操作符类是 GiST 的 range_ops，并且只有当范围列不是第一个索引列时才可能出错。\n     \u003c/p\u003e","id":"14.24-1210849badf0243c","identity_text":"Fix possible mis-decoding of index tuples during GiST and SP-GiST index-only scans (Peter Geoghegan) This error could lead to emitting corrupted data from an index-only scan plan. The only affected core opclass is GiST's range_ops, and it could only fail if the range column were not the first index column.","part":"changes","patch_ids":["7ca370d11dfae190ad9f8fa921a2ad3d"],"related_changes":[{"db_id":"ae38912b977aee6ba812c2a99322b4ad","evidence":{"patch_ids":["7ca370d11dfae190ad9f8fa921a2ad3d"],"same_day":true,"statement_hash":"9efc8088134be1c1e73efd8706fe30257c8c7003aa683976e4455f175426f7c5"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 GiST 和 SP-GiST 仅索引扫描期间可能错误解码索引元组的问题","url":"/docs/compare/?release=18.6#18.6-5a9e09abedfed179","version":"18.6"},{"db_id":"7639c43a8df152827beb0f3c4e7cfc7b","evidence":{"patch_ids":["7ca370d11dfae190ad9f8fa921a2ad3d"],"same_day":true,"statement_hash":"9efc8088134be1c1e73efd8706fe30257c8c7003aa683976e4455f175426f7c5"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 GiST 和 SP-GiST 仅索引扫描期间可能错误解码索引元组的问题","url":"/docs/compare/?release=17.11#17.11-7b0787620962198f","version":"17.11"},{"db_id":"fcb9ed65e8420a852359f3e3f6bd54b4","evidence":{"patch_ids":["7ca370d11dfae190ad9f8fa921a2ad3d"],"same_day":true,"statement_hash":"9efc8088134be1c1e73efd8706fe30257c8c7003aa683976e4455f175426f7c5"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 GiST 和 SP-GiST 仅索引扫描期间可能错误解码索引元组的问题","url":"/docs/compare/?release=16.15#16.15-54c08a28fecc0079","version":"16.15"},{"db_id":"65fae97c05ec4b526543f385b077725a","evidence":{"patch_ids":["7ca370d11dfae190ad9f8fa921a2ad3d"],"same_day":true,"statement_hash":"9efc8088134be1c1e73efd8706fe30257c8c7003aa683976e4455f175426f7c5"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 GiST 和 SP-GiST 仅索引扫描期间可能错误解码索引元组的问题","url":"/docs/compare/?release=15.19#15.19-05c8adba23ea9473","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["7ca370d11dfae190ad9f8fa921a2ad3d"],"same_day":true,"statement_hash":"9efc8088134be1c1e73efd8706fe30257c8c7003aa683976e4455f175426f7c5"},"rule":2,"target":"65fae97c05ec4b526543f385b077725a","type":"equivalent"},{"evidence":{"patch_ids":["7ca370d11dfae190ad9f8fa921a2ad3d"],"same_day":true,"statement_hash":"9efc8088134be1c1e73efd8706fe30257c8c7003aa683976e4455f175426f7c5"},"rule":2,"target":"7639c43a8df152827beb0f3c4e7cfc7b","type":"equivalent"},{"evidence":{"patch_ids":["7ca370d11dfae190ad9f8fa921a2ad3d"],"same_day":true,"statement_hash":"9efc8088134be1c1e73efd8706fe30257c8c7003aa683976e4455f175426f7c5"},"rule":2,"target":"ae38912b977aee6ba812c2a99322b4ad","type":"equivalent"},{"evidence":{"patch_ids":["7ca370d11dfae190ad9f8fa921a2ad3d"],"same_day":true,"statement_hash":"9efc8088134be1c1e73efd8706fe30257c8c7003aa683976e4455f175426f7c5"},"rule":2,"target":"fcb9ed65e8420a852359f3e3f6bd54b4","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["e4ad22eb0"],"source_entry_id":"14.24/changes/049","source_hash":"f72559a6dbc3d9cc77d731a40b48a053ac764f1bfd8242febae894857bb92b5a","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"9efc8088134be1c1e73efd8706fe30257c8c7003aa683976e4455f175426f7c5","text":"修复 GiST 和 SP-GiST 仅索引扫描期间可能错误解码索引元组的问题（Peter Geoghegan）§ 此错误可能导致仅索引扫描计划输出损坏的数据。唯一受影响的核心操作符类是 GiST 的 range_ops，并且只有当范围列不是第一个索引列时才可能出错。","title":"修复 GiST 和 SP-GiST 仅索引扫描期间可能错误解码索引元组的问题","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["4647ac142","4b3bc6b71","9951e3d38","aa80c34c8","f0a831ef3","f25a07b2d"],"commit_groups":[["4647ac142","4b3bc6b71","9951e3d38","aa80c34c8","f0a831ef3","f25a07b2d"]],"commits":["4b3bc6b71"],"cves":[],"db_id":"b3f796774144a4fd6c7ec84d799fce9c","html":"\u003cp\u003e\n      创建目录时，容忍同一目录被并发创建（Andrew Dunstan、Tom Lane）\u003ca href=\"https://postgr.es/c/4b3bc6b71\"\u003e§\u003c/a\u003e\n\u003c/p\u003e","id":"14.24-2c65a57d05310508","identity_text":"When creating directories, tolerate concurrent creation of the same directory (Andrew Dunstan, Tom Lane)","part":"changes","patch_ids":["be8272a81c28ebdf12c66d1c6ab05685"],"related_changes":[{"db_id":"7b3923b1add1cfb8cc243430e7e7769f","evidence":{"patch_ids":["be8272a81c28ebdf12c66d1c6ab05685"],"same_day":true,"statement_hash":"abc7e610f491a4ce631c4e62316b1f9bd718c7e9e581a2f07ba12774f5db10eb"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"创建目录时，容忍同一目录被并发创建","url":"/docs/compare/?release=18.6#18.6-67b85199c3f22fc0","version":"18.6"},{"db_id":"0c17e02f698dc60a4c3ff762796f0a7f","evidence":{"patch_ids":["be8272a81c28ebdf12c66d1c6ab05685"],"same_day":true,"statement_hash":"abc7e610f491a4ce631c4e62316b1f9bd718c7e9e581a2f07ba12774f5db10eb"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"创建目录时，容忍同一目录被并发创建","url":"/docs/compare/?release=17.11#17.11-13269e0439b17ec9","version":"17.11"},{"db_id":"467be2f83ba0b7e841b7fca2b8c0a0af","evidence":{"patch_ids":["be8272a81c28ebdf12c66d1c6ab05685"],"same_day":true,"statement_hash":"abc7e610f491a4ce631c4e62316b1f9bd718c7e9e581a2f07ba12774f5db10eb"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"创建目录时，容忍同一目录被并发创建","url":"/docs/compare/?release=16.15#16.15-560dbc4a06a156a7","version":"16.15"},{"db_id":"268b9e4fbdc7682f30cd928e974932c2","evidence":{"patch_ids":["be8272a81c28ebdf12c66d1c6ab05685"],"same_day":true,"statement_hash":"abc7e610f491a4ce631c4e62316b1f9bd718c7e9e581a2f07ba12774f5db10eb"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"创建目录时，容忍同一目录被并发创建","url":"/docs/compare/?release=15.19#15.19-a8d34c2e8685a39c","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["be8272a81c28ebdf12c66d1c6ab05685"],"same_day":true,"statement_hash":"abc7e610f491a4ce631c4e62316b1f9bd718c7e9e581a2f07ba12774f5db10eb"},"rule":2,"target":"0c17e02f698dc60a4c3ff762796f0a7f","type":"equivalent"},{"evidence":{"patch_ids":["be8272a81c28ebdf12c66d1c6ab05685"],"same_day":true,"statement_hash":"abc7e610f491a4ce631c4e62316b1f9bd718c7e9e581a2f07ba12774f5db10eb"},"rule":2,"target":"268b9e4fbdc7682f30cd928e974932c2","type":"equivalent"},{"evidence":{"patch_ids":["be8272a81c28ebdf12c66d1c6ab05685"],"same_day":true,"statement_hash":"abc7e610f491a4ce631c4e62316b1f9bd718c7e9e581a2f07ba12774f5db10eb"},"rule":2,"target":"467be2f83ba0b7e841b7fca2b8c0a0af","type":"equivalent"},{"evidence":{"patch_ids":["be8272a81c28ebdf12c66d1c6ab05685"],"same_day":true,"statement_hash":"abc7e610f491a4ce631c4e62316b1f9bd718c7e9e581a2f07ba12774f5db10eb"},"rule":2,"target":"7b3923b1add1cfb8cc243430e7e7769f","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["4b3bc6b71"],"source_entry_id":"14.24/changes/050","source_hash":"7e82d748e2c2fc5e537c1ece33c8ffbd834c2a41654ab1d397003667947b3b82","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"abc7e610f491a4ce631c4e62316b1f9bd718c7e9e581a2f07ba12774f5db10eb","text":"创建目录时，容忍同一目录被并发创建（Andrew Dunstan、Tom Lane）§","title":"创建目录时，容忍同一目录被并发创建","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["2fbb21170","36b6ed260","3a9909eda","5100bdbd3","5fa137727","c1588f92a","c8cd3d697","d44cd4674","d9bc0d96c","ef3d7b15e","f9d5a52da","fd93ee100"],"commit_groups":[["2fbb21170","3a9909eda","5100bdbd3","5fa137727","c8cd3d697","d9bc0d96c"],["36b6ed260","c1588f92a","d44cd4674","ef3d7b15e","f9d5a52da","fd93ee100"]],"commits":["36b6ed260","5100bdbd3"],"cves":[],"db_id":"a9f65b357e29d3c7c477cf734deef532","html":"\u003cp\u003e\n      通过在任何被依赖对象上取得共享锁，防止创建悬空的对象依赖关系（Bertrand Drouvot）\u003ca href=\"https://postgr.es/c/5100bdbd3\"\u003e§\u003c/a\u003e\n\u003ca href=\"https://postgr.es/c/36b6ed260\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      该共享锁会与任何删除被依赖对象的尝试冲突，从而消除之前存在的竞态条件。例如，如果一个会话删除一个在其看来为空的模式，同时另一个会话在该模式中创建函数，此前两个事务都可能提交，并留下无效的函数定义。现在，其中一个事务会失败。\n     \u003c/p\u003e","id":"14.24-9b47dd97523d83ec","identity_text":"Prevent creation of dangling object dependencies by acquiring a shared lock on any object being depended on (Bertrand Drouvot) The shared lock will conflict with any attempt to drop the depended-on object, eliminating the race condition that formerly existed. For example, if one session drops a schema (that appears empty to it) concurrently with some other session creating a function in that schema, previously both transactions could commit, leaving an invalid function definition behind. Now, one transaction or the other will fail.","part":"changes","patch_ids":["6536cf91f14cf539ab4bd08602032b89","aca7f5e76462423a64bce89519f8b4ca"],"related_changes":[{"db_id":"a34abdf13c3a75b01325176fd494ce54","evidence":{"patch_ids":["6536cf91f14cf539ab4bd08602032b89","aca7f5e76462423a64bce89519f8b4ca"],"same_day":true,"statement_hash":"aabd3d9b6b1a0460624c086ca1a5f2223aec25bb342c2883b18a435de52ba98c"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"通过在任何被依赖对象上取得共享锁，防止创建悬空的对象依赖关系","url":"/docs/compare/?release=18.6#18.6-04ef095d0d14ee39","version":"18.6"},{"db_id":"e1119f78a9d166b823f798e0194d35f4","evidence":{"patch_ids":["6536cf91f14cf539ab4bd08602032b89","aca7f5e76462423a64bce89519f8b4ca"],"same_day":true,"statement_hash":"aabd3d9b6b1a0460624c086ca1a5f2223aec25bb342c2883b18a435de52ba98c"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"通过在任何被依赖对象上取得共享锁，防止创建悬空的对象依赖关系","url":"/docs/compare/?release=17.11#17.11-3ecac11b2752e81b","version":"17.11"},{"db_id":"e811cff0335c3ca435753578de40cbd3","evidence":{"patch_ids":["6536cf91f14cf539ab4bd08602032b89","aca7f5e76462423a64bce89519f8b4ca"],"same_day":true,"statement_hash":"aabd3d9b6b1a0460624c086ca1a5f2223aec25bb342c2883b18a435de52ba98c"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"通过在任何被依赖对象上取得共享锁，防止创建悬空的对象依赖关系","url":"/docs/compare/?release=16.15#16.15-c1d18953b262f630","version":"16.15"},{"db_id":"744925e5c1491a9c1e34c5d45e2c5ffd","evidence":{"patch_ids":["6536cf91f14cf539ab4bd08602032b89","aca7f5e76462423a64bce89519f8b4ca"],"same_day":true,"statement_hash":"aabd3d9b6b1a0460624c086ca1a5f2223aec25bb342c2883b18a435de52ba98c"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"通过在任何被依赖对象上取得共享锁，防止创建悬空的对象依赖关系","url":"/docs/compare/?release=15.19#15.19-f3cfe840091a64df","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["6536cf91f14cf539ab4bd08602032b89","aca7f5e76462423a64bce89519f8b4ca"],"same_day":true,"statement_hash":"aabd3d9b6b1a0460624c086ca1a5f2223aec25bb342c2883b18a435de52ba98c"},"rule":2,"target":"744925e5c1491a9c1e34c5d45e2c5ffd","type":"equivalent"},{"evidence":{"patch_ids":["6536cf91f14cf539ab4bd08602032b89","aca7f5e76462423a64bce89519f8b4ca"],"same_day":true,"statement_hash":"aabd3d9b6b1a0460624c086ca1a5f2223aec25bb342c2883b18a435de52ba98c"},"rule":2,"target":"a34abdf13c3a75b01325176fd494ce54","type":"equivalent"},{"evidence":{"patch_ids":["6536cf91f14cf539ab4bd08602032b89","aca7f5e76462423a64bce89519f8b4ca"],"same_day":true,"statement_hash":"aabd3d9b6b1a0460624c086ca1a5f2223aec25bb342c2883b18a435de52ba98c"},"rule":2,"target":"e1119f78a9d166b823f798e0194d35f4","type":"equivalent"},{"evidence":{"patch_ids":["6536cf91f14cf539ab4bd08602032b89","aca7f5e76462423a64bce89519f8b4ca"],"same_day":true,"statement_hash":"aabd3d9b6b1a0460624c086ca1a5f2223aec25bb342c2883b18a435de52ba98c"},"rule":2,"target":"e811cff0335c3ca435753578de40cbd3","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["36b6ed260","5100bdbd3"],"source_entry_id":"14.24/changes/051","source_hash":"faa7e5f6dc106d54e99b6c7d64ec986fbde3f06c73924bc31df7288332c50f7b","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"aabd3d9b6b1a0460624c086ca1a5f2223aec25bb342c2883b18a435de52ba98c","text":"通过在任何被依赖对象上取得共享锁，防止创建悬空的对象依赖关系（Bertrand Drouvot）§ § 该共享锁会与任何删除被依赖对象的尝试冲突，从而消除之前存在的竞态条件。例如，如果一个会话删除一个在其看来为空的模式，同时另一个会话在该模式中创建函数，此前两个事务都可能提交，并留下无效的函数定义。现在，其中一个事务会失败。","title":"通过在任何被依赖对象上取得共享锁，防止创建悬空的对象依赖关系","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["2aa3c6d1f","2fc3e1b44","5d18105ca","8434c9385","ce3f19e26","d560e730e","e321faaae"],"commit_groups":[["2aa3c6d1f","2fc3e1b44","5d18105ca","8434c9385","ce3f19e26","d560e730e","e321faaae"]],"commits":["2fc3e1b44"],"cves":[],"db_id":"03ed91689e7472f3e2b40c0668a9efe6","html":"\u003cp\u003e\n      修复 \u003ccode\u003eSERIALIZABLE\u003c/code\u003e 隔离模式中冲突检测的竞态条件（Peter Geoghegan）\u003ca href=\"https://postgr.es/c/2fc3e1b44\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      检查最初为空的 B-树索引时可能漏掉冲突，因错误地允许冲突事务提交而破坏可串行性。\n     \u003c/p\u003e","id":"14.24-62f053723972383a","identity_text":"Fix race condition in conflict detection for SERIALIZABLE isolation mode (Peter Geoghegan) A conflict could be missed when examining an initially-empty btree index, allowing failure of serializability due to improperly allowing conflicting transactions to commit.","part":"changes","patch_ids":["76d6d81d4ce8e28654632817bbc18838"],"related_changes":[{"db_id":"37ab9407c7a4720c042c3c30e616b840","evidence":{"patch_ids":["76d6d81d4ce8e28654632817bbc18838"],"same_day":true,"statement_hash":"08b20f0b0cc877fd90cf1664195b8bfe906cd38aa76d41fb6a77cbb2ead17297"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 SERIALIZABLE 隔离模式中冲突检测的竞态条件","url":"/docs/compare/?release=18.6#18.6-020cfc417a109d87","version":"18.6"},{"db_id":"06c841c7e97c29498c3c18507b648e43","evidence":{"patch_ids":["76d6d81d4ce8e28654632817bbc18838"],"same_day":true,"statement_hash":"08b20f0b0cc877fd90cf1664195b8bfe906cd38aa76d41fb6a77cbb2ead17297"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 SERIALIZABLE 隔离模式中冲突检测的竞态条件","url":"/docs/compare/?release=17.11#17.11-869506b0934d2991","version":"17.11"},{"db_id":"a69025df57e9873eeee634c6a24b5f52","evidence":{"patch_ids":["76d6d81d4ce8e28654632817bbc18838"],"same_day":true,"statement_hash":"08b20f0b0cc877fd90cf1664195b8bfe906cd38aa76d41fb6a77cbb2ead17297"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 SERIALIZABLE 隔离模式中冲突检测的竞态条件","url":"/docs/compare/?release=16.15#16.15-1a9b527727b160db","version":"16.15"},{"db_id":"8911cf537e3c81e99f223106f705f385","evidence":{"patch_ids":["76d6d81d4ce8e28654632817bbc18838"],"same_day":true,"statement_hash":"08b20f0b0cc877fd90cf1664195b8bfe906cd38aa76d41fb6a77cbb2ead17297"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 SERIALIZABLE 隔离模式中冲突检测的竞态条件","url":"/docs/compare/?release=15.19#15.19-7ed1bdbb167b6fe1","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["76d6d81d4ce8e28654632817bbc18838"],"same_day":true,"statement_hash":"08b20f0b0cc877fd90cf1664195b8bfe906cd38aa76d41fb6a77cbb2ead17297"},"rule":2,"target":"06c841c7e97c29498c3c18507b648e43","type":"equivalent"},{"evidence":{"patch_ids":["76d6d81d4ce8e28654632817bbc18838"],"same_day":true,"statement_hash":"08b20f0b0cc877fd90cf1664195b8bfe906cd38aa76d41fb6a77cbb2ead17297"},"rule":2,"target":"37ab9407c7a4720c042c3c30e616b840","type":"equivalent"},{"evidence":{"patch_ids":["76d6d81d4ce8e28654632817bbc18838"],"same_day":true,"statement_hash":"08b20f0b0cc877fd90cf1664195b8bfe906cd38aa76d41fb6a77cbb2ead17297"},"rule":2,"target":"8911cf537e3c81e99f223106f705f385","type":"equivalent"},{"evidence":{"patch_ids":["76d6d81d4ce8e28654632817bbc18838"],"same_day":true,"statement_hash":"08b20f0b0cc877fd90cf1664195b8bfe906cd38aa76d41fb6a77cbb2ead17297"},"rule":2,"target":"a69025df57e9873eeee634c6a24b5f52","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["2fc3e1b44"],"source_entry_id":"14.24/changes/052","source_hash":"41a0e8de8418519cd5504e2aabc87498976640afc82bd902e5d44532770ddbb6","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"08b20f0b0cc877fd90cf1664195b8bfe906cd38aa76d41fb6a77cbb2ead17297","text":"修复 SERIALIZABLE 隔离模式中冲突检测的竞态条件（Peter Geoghegan）§ 检查最初为空的 B-树索引时可能漏掉冲突，因错误地允许冲突事务提交而破坏可串行性。","title":"修复 SERIALIZABLE 隔离模式中冲突检测的竞态条件","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["12c9b8b42","4e8edf53f","563104523","65d04df60","8007d1185","84b9d6bce","ae08eb168","d489c4439","d5cc6df60","db4d12fc9","e14b4ea4a","e786fb5aa"],"commit_groups":[["12c9b8b42","4e8edf53f","84b9d6bce","db4d12fc9","e14b4ea4a","e786fb5aa"],["563104523","65d04df60","8007d1185","ae08eb168","d489c4439","d5cc6df60"]],"commits":["8007d1185","db4d12fc9"],"cves":[],"db_id":"f2fcbfdff352b775c9b16fc62d0649b5","html":"\u003cp\u003e\n      修复属于同一锁组的一组进程同时退出时的竞态条件（Vlad Lesin）\u003ca href=\"https://postgr.es/c/8007d1185\"\u003e§\u003c/a\u003e\n\u003ca href=\"https://postgr.es/c/db4d12fc9\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      这些错误可能导致 PANIC 中止，并出现\u003cspan\u003e“\u003cspan\u003elatch already owned\u003c/span\u003e”\u003c/span\u003e等消息。普通并行查询通常不会出现此问题，因为领导者在看到其工作进程结束之前不会退出；但某些扩展会触发此问题。\n     \u003c/p\u003e","id":"14.24-fc8ff9cc62311a3d","identity_text":"Fix race conditions when a set of processes that belong to the same lock group exit at the same time (Vlad Lesin) These errors could lead to PANIC aborts, with messages such as latch already owned. The issue does not normally arise in regular parallel query, since the leader won't exit before seeing its workers finish; but some extensions reach the problem.","part":"changes","patch_ids":["879e5bd994847bca2264dea6ae8e7636","deebb0acfe2f0b111568661ecf5bdaeb"],"related_changes":[{"db_id":"5b2fc7485dc383d08b3d68f5272b2a11","evidence":{"patch_ids":["879e5bd994847bca2264dea6ae8e7636","deebb0acfe2f0b111568661ecf5bdaeb"],"same_day":true,"statement_hash":"8d70122ebcc8b017ec76eed632b4e53a2f4e86497efb77268f99f3855284c592"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复属于同一锁组的一组进程同时退出时的竞态条件","url":"/docs/compare/?release=18.6#18.6-25e5a2422482dd1c","version":"18.6"},{"db_id":"62cbccb23171427808fec1301b0ac804","evidence":{"patch_ids":["879e5bd994847bca2264dea6ae8e7636","deebb0acfe2f0b111568661ecf5bdaeb"],"same_day":true,"statement_hash":"8d70122ebcc8b017ec76eed632b4e53a2f4e86497efb77268f99f3855284c592"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复属于同一锁组的一组进程同时退出时的竞态条件","url":"/docs/compare/?release=17.11#17.11-31516fe59eede273","version":"17.11"},{"db_id":"2c46dad30462775a825ad96cfb3ffbdf","evidence":{"patch_ids":["879e5bd994847bca2264dea6ae8e7636","deebb0acfe2f0b111568661ecf5bdaeb"],"same_day":true,"statement_hash":"8d70122ebcc8b017ec76eed632b4e53a2f4e86497efb77268f99f3855284c592"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复属于同一锁组的一组进程同时退出时的竞态条件","url":"/docs/compare/?release=16.15#16.15-90b68cb35e0fad17","version":"16.15"},{"db_id":"edd683109ce0095065cd3a04ab6b5136","evidence":{"patch_ids":["879e5bd994847bca2264dea6ae8e7636","deebb0acfe2f0b111568661ecf5bdaeb"],"same_day":true,"statement_hash":"8d70122ebcc8b017ec76eed632b4e53a2f4e86497efb77268f99f3855284c592"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复属于同一锁组的一组进程同时退出时的竞态条件","url":"/docs/compare/?release=15.19#15.19-786c47066d87de68","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["879e5bd994847bca2264dea6ae8e7636","deebb0acfe2f0b111568661ecf5bdaeb"],"same_day":true,"statement_hash":"8d70122ebcc8b017ec76eed632b4e53a2f4e86497efb77268f99f3855284c592"},"rule":2,"target":"2c46dad30462775a825ad96cfb3ffbdf","type":"equivalent"},{"evidence":{"patch_ids":["879e5bd994847bca2264dea6ae8e7636","deebb0acfe2f0b111568661ecf5bdaeb"],"same_day":true,"statement_hash":"8d70122ebcc8b017ec76eed632b4e53a2f4e86497efb77268f99f3855284c592"},"rule":2,"target":"5b2fc7485dc383d08b3d68f5272b2a11","type":"equivalent"},{"evidence":{"patch_ids":["879e5bd994847bca2264dea6ae8e7636","deebb0acfe2f0b111568661ecf5bdaeb"],"same_day":true,"statement_hash":"8d70122ebcc8b017ec76eed632b4e53a2f4e86497efb77268f99f3855284c592"},"rule":2,"target":"62cbccb23171427808fec1301b0ac804","type":"equivalent"},{"evidence":{"patch_ids":["879e5bd994847bca2264dea6ae8e7636","deebb0acfe2f0b111568661ecf5bdaeb"],"same_day":true,"statement_hash":"8d70122ebcc8b017ec76eed632b4e53a2f4e86497efb77268f99f3855284c592"},"rule":2,"target":"edd683109ce0095065cd3a04ab6b5136","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["8007d1185","db4d12fc9"],"source_entry_id":"14.24/changes/053","source_hash":"cb815a82a5c1573aee2c03b999897cee6a2d09a12cca95b4b4db6cc490ccb515","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"8d70122ebcc8b017ec76eed632b4e53a2f4e86497efb77268f99f3855284c592","text":"修复属于同一锁组的一组进程同时退出时的竞态条件（Vlad Lesin）§ § 这些错误可能导致 PANIC 中止，并出现“latch already owned”等消息。普通并行查询通常不会出现此问题，因为领导者在看到其工作进程结束之前不会退出；但某些扩展会触发此问题。","title":"修复属于同一锁组的一组进程同时退出时的竞态条件","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["065cbfb88","b903d1792","c37b38806","c89499a79","e037a4199","e18b77153"],"commit_groups":[["065cbfb88","b903d1792","c37b38806","c89499a79","e037a4199","e18b77153"]],"commits":["e18b77153"],"cves":[],"db_id":"5ea87a1c210c433da8cd395769d7ef5a","html":"\u003cp\u003e\n      避免在时间线跳转期间暴露 WAL 接收进程的完整连接字符串（Chao Li）\u003ca href=\"https://postgr.es/c/e18b77153\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n\u003ccode\u003epg_stat_wal_receiver\u003c/code\u003e 视图应显示不含敏感数据的脱敏连接字符串。但复用现有 WAL 接收进程时，它会短暂显示完整字符串。\n     \u003c/p\u003e","id":"14.24-6609d3eebb509440","identity_text":"Avoid exposing a WAL receiver's full connection string during timeline jumps (Chao Li) The pg_stat_wal_receiver view should show a sanitized version of the connection string, without sensitive data. But it transiently showed the full string when we re-use an existing WAL receiver.","part":"changes","patch_ids":["625ea274df56e79c48b28c2ef1353303"],"related_changes":[{"db_id":"cd98d8763a77664800622e26ed44bfce","evidence":{"patch_ids":["625ea274df56e79c48b28c2ef1353303"],"same_day":true,"statement_hash":"127370516df3531677f14f892409223ad12c32539de2175c8aa26416b2e1cb64"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"避免在时间线跳转期间暴露 WAL 接收进程的完整连接字符串","url":"/docs/compare/?release=18.6#18.6-afb05b61d5152a3a","version":"18.6"},{"db_id":"37402bbf4de6b9a68bc1b26a7f9417b9","evidence":{"patch_ids":["625ea274df56e79c48b28c2ef1353303"],"same_day":true,"statement_hash":"127370516df3531677f14f892409223ad12c32539de2175c8aa26416b2e1cb64"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"避免在时间线跳转期间暴露 WAL 接收进程的完整连接字符串","url":"/docs/compare/?release=17.11#17.11-1e3e950c5c9035d8","version":"17.11"},{"db_id":"25d36b6cd39f40aef2ae629b3189e49c","evidence":{"patch_ids":["625ea274df56e79c48b28c2ef1353303"],"same_day":true,"statement_hash":"127370516df3531677f14f892409223ad12c32539de2175c8aa26416b2e1cb64"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"避免在时间线跳转期间暴露 WAL 接收进程的完整连接字符串","url":"/docs/compare/?release=16.15#16.15-90e616e97be2e9eb","version":"16.15"},{"db_id":"e4f8b56dcd2aef047beee675ed6d7da6","evidence":{"patch_ids":["625ea274df56e79c48b28c2ef1353303"],"same_day":true,"statement_hash":"127370516df3531677f14f892409223ad12c32539de2175c8aa26416b2e1cb64"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"避免在时间线跳转期间暴露 WAL 接收进程的完整连接字符串","url":"/docs/compare/?release=15.19#15.19-aed6228ca708ae21","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["625ea274df56e79c48b28c2ef1353303"],"same_day":true,"statement_hash":"127370516df3531677f14f892409223ad12c32539de2175c8aa26416b2e1cb64"},"rule":2,"target":"25d36b6cd39f40aef2ae629b3189e49c","type":"equivalent"},{"evidence":{"patch_ids":["625ea274df56e79c48b28c2ef1353303"],"same_day":true,"statement_hash":"127370516df3531677f14f892409223ad12c32539de2175c8aa26416b2e1cb64"},"rule":2,"target":"37402bbf4de6b9a68bc1b26a7f9417b9","type":"equivalent"},{"evidence":{"patch_ids":["625ea274df56e79c48b28c2ef1353303"],"same_day":true,"statement_hash":"127370516df3531677f14f892409223ad12c32539de2175c8aa26416b2e1cb64"},"rule":2,"target":"cd98d8763a77664800622e26ed44bfce","type":"equivalent"},{"evidence":{"patch_ids":["625ea274df56e79c48b28c2ef1353303"],"same_day":true,"statement_hash":"127370516df3531677f14f892409223ad12c32539de2175c8aa26416b2e1cb64"},"rule":2,"target":"e4f8b56dcd2aef047beee675ed6d7da6","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["e18b77153"],"source_entry_id":"14.24/changes/054","source_hash":"7b4ed6c820cc5be1af652b9bcbc239660927fb1ca7969daefa2c8d989c719723","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"127370516df3531677f14f892409223ad12c32539de2175c8aa26416b2e1cb64","text":"避免在时间线跳转期间暴露 WAL 接收进程的完整连接字符串（Chao Li）§ pg_stat_wal_receiver 视图应显示不含敏感数据的脱敏连接字符串。但复用现有 WAL 接收进程时，它会短暂显示完整字符串。","title":"避免在时间线跳转期间暴露 WAL 接收进程的完整连接字符串","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["15f4e3d0c","510a05f07","59759e1a5","871d4f5b6","bf7d19be9","dc3db3a83"],"commit_groups":[["15f4e3d0c","510a05f07","59759e1a5","871d4f5b6","bf7d19be9","dc3db3a83"]],"commits":["510a05f07"],"cves":[],"db_id":"2bec14054822093ac2f6b8e098cf50ef","html":"\u003cp\u003e\n      使用运行时检查而不只是 Asserts，验证逻辑复制期间接收的元组具有正确的列数（Varik Matevosyan）\u003ca href=\"https://postgr.es/c/510a05f07\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      恶意或有缺陷的发布者可能发送列数不一致的数据。虽然尚未找到会因此产生严重不良后果的场景，但额外谨慎似乎是必要的。\n     \u003c/p\u003e","id":"14.24-09af4da1397bcb08","identity_text":"Use run-time checks, not just Asserts, to verify the correct number of columns in tuples received during logical replication (Varik Matevosyan) A malicious or buggy publisher could send inconsistent numbers of columns. While we could not find a scenario in which this would have serious ill effects, extra caution seems warranted.","part":"changes","patch_ids":["8665f0efb53857b1f65d3aab55fce701"],"related_changes":[{"db_id":"29b7d5b8d289c2e83357b4b3887c6ece","evidence":{"patch_ids":["8665f0efb53857b1f65d3aab55fce701"],"same_day":true,"statement_hash":"ccb9933f82e897841fcc7799b27c7cb46784658d50590f121d691ba4eb1ab215"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"使用运行时检查而不只是 Asserts，验证逻辑复制期间接收的元组具有正确的列数","url":"/docs/compare/?release=18.6#18.6-842cc1f1f4a2405b","version":"18.6"},{"db_id":"52499b2c374ab99a8520d4e208b224ca","evidence":{"patch_ids":["8665f0efb53857b1f65d3aab55fce701"],"same_day":true,"statement_hash":"ccb9933f82e897841fcc7799b27c7cb46784658d50590f121d691ba4eb1ab215"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"使用运行时检查而不只是 Asserts，验证逻辑复制期间接收的元组具有正确的列数","url":"/docs/compare/?release=17.11#17.11-83651d53e036fd59","version":"17.11"},{"db_id":"3d36fdfc273db605a521f97942cc7c8b","evidence":{"patch_ids":["8665f0efb53857b1f65d3aab55fce701"],"same_day":true,"statement_hash":"ccb9933f82e897841fcc7799b27c7cb46784658d50590f121d691ba4eb1ab215"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"使用运行时检查而不只是 Asserts，验证逻辑复制期间接收的元组具有正确的列数","url":"/docs/compare/?release=16.15#16.15-a8762c512498c73b","version":"16.15"},{"db_id":"b984d160c74d462df46c0818a7351ddb","evidence":{"patch_ids":["8665f0efb53857b1f65d3aab55fce701"],"same_day":true,"statement_hash":"ccb9933f82e897841fcc7799b27c7cb46784658d50590f121d691ba4eb1ab215"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"使用运行时检查而不只是 Asserts，验证逻辑复制期间接收的元组具有正确的列数","url":"/docs/compare/?release=15.19#15.19-8e9a0447c93f98f9","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["8665f0efb53857b1f65d3aab55fce701"],"same_day":true,"statement_hash":"ccb9933f82e897841fcc7799b27c7cb46784658d50590f121d691ba4eb1ab215"},"rule":2,"target":"29b7d5b8d289c2e83357b4b3887c6ece","type":"equivalent"},{"evidence":{"patch_ids":["8665f0efb53857b1f65d3aab55fce701"],"same_day":true,"statement_hash":"ccb9933f82e897841fcc7799b27c7cb46784658d50590f121d691ba4eb1ab215"},"rule":2,"target":"3d36fdfc273db605a521f97942cc7c8b","type":"equivalent"},{"evidence":{"patch_ids":["8665f0efb53857b1f65d3aab55fce701"],"same_day":true,"statement_hash":"ccb9933f82e897841fcc7799b27c7cb46784658d50590f121d691ba4eb1ab215"},"rule":2,"target":"52499b2c374ab99a8520d4e208b224ca","type":"equivalent"},{"evidence":{"patch_ids":["8665f0efb53857b1f65d3aab55fce701"],"same_day":true,"statement_hash":"ccb9933f82e897841fcc7799b27c7cb46784658d50590f121d691ba4eb1ab215"},"rule":2,"target":"b984d160c74d462df46c0818a7351ddb","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["510a05f07"],"source_entry_id":"14.24/changes/055","source_hash":"53c992bb8b7064428e0104d0c2c3a47b0ab42114e00eef7a09ff16fbe8a4d794","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"ccb9933f82e897841fcc7799b27c7cb46784658d50590f121d691ba4eb1ab215","text":"使用运行时检查而不只是 Asserts，验证逻辑复制期间接收的元组具有正确的列数（Varik Matevosyan）§ 恶意或有缺陷的发布者可能发送列数不一致的数据。虽然尚未找到会因此产生严重不良后果的场景，但额外谨慎似乎是必要的。","title":"使用运行时检查而不只是 Asserts，验证逻辑复制期间接收的元组具有正确的列数","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["14810cc0d","26d6c19d0","2a00840e8","819e5b964","a75bd485b","abb582555"],"commit_groups":[["14810cc0d","26d6c19d0","2a00840e8","819e5b964","a75bd485b","abb582555"]],"commits":["2a00840e8"],"cves":[],"db_id":"54ed2b1cad03859f062c5ae13dc62693","html":"\u003cp\u003e\n      改进构造的复制命令中字符串参数的引用处理（Tom Lane）\u003ca href=\"https://postgr.es/c/2a00840e8\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      多处生成复制命令的代码在引用复制槽名称及其他需要插入命令的参数时不够谨慎。这可能导致命令出现意外的语法错误。原则上，精心构造的复制槽名称可能导致 SQL 注入；但这种场景在实践中似乎极不可能发生，因为只有高权限用户才能调用复制操作，而且他们没有理由使用来自不可信来源的槽名称。\n     \u003c/p\u003e","id":"14.24-064a7da098f9ba6c","identity_text":"Clean up quoting of string parameters within constructed replication commands (Tom Lane) Various places that generate replication commands were not being adequately careful about quoting replication slot names and other parameters that need to be inserted into those commands. This could result in unexpected syntax errors in those commands. In principle, a crafted replication slot name could result in SQL injection; but such a scenario seems very unlikely to occur in practice, since replication operations can only be invoked by highly-privileged users and there is no reason for them to use a slot name coming from an untrustworthy source.","part":"changes","patch_ids":["32ecc5c79c988e036daa92766ab9c826"],"related_changes":[{"db_id":"1ef980c1780b85528850bbdd9466fa41","evidence":{"patch_ids":["32ecc5c79c988e036daa92766ab9c826"],"same_day":true,"statement_hash":"247fbb71eedfaa36fb21d3377adab99beeefb9b4863ba98c464369fe5a6bc0fa"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"改进构造的复制命令中字符串参数的引用处理","url":"/docs/compare/?release=18.6#18.6-9e33f830eed35c6f","version":"18.6"},{"db_id":"de678a747a30bf549de927b53ebbc3e7","evidence":{"patch_ids":["32ecc5c79c988e036daa92766ab9c826"],"same_day":true,"statement_hash":"247fbb71eedfaa36fb21d3377adab99beeefb9b4863ba98c464369fe5a6bc0fa"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"改进构造的复制命令中字符串参数的引用处理","url":"/docs/compare/?release=17.11#17.11-f6a7585b485a41e6","version":"17.11"},{"db_id":"74c4a1b4a808ecb95dfae29020191080","evidence":{"patch_ids":["32ecc5c79c988e036daa92766ab9c826"],"same_day":true,"statement_hash":"247fbb71eedfaa36fb21d3377adab99beeefb9b4863ba98c464369fe5a6bc0fa"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"改进构造的复制命令中字符串参数的引用处理","url":"/docs/compare/?release=16.15#16.15-af8c105159d57f3b","version":"16.15"},{"db_id":"492d74031b46a2dbdba89517c2392411","evidence":{"patch_ids":["32ecc5c79c988e036daa92766ab9c826"],"same_day":true,"statement_hash":"247fbb71eedfaa36fb21d3377adab99beeefb9b4863ba98c464369fe5a6bc0fa"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"改进构造的复制命令中字符串参数的引用处理","url":"/docs/compare/?release=15.19#15.19-f46d264eacda5b12","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["32ecc5c79c988e036daa92766ab9c826"],"same_day":true,"statement_hash":"247fbb71eedfaa36fb21d3377adab99beeefb9b4863ba98c464369fe5a6bc0fa"},"rule":2,"target":"1ef980c1780b85528850bbdd9466fa41","type":"equivalent"},{"evidence":{"patch_ids":["32ecc5c79c988e036daa92766ab9c826"],"same_day":true,"statement_hash":"247fbb71eedfaa36fb21d3377adab99beeefb9b4863ba98c464369fe5a6bc0fa"},"rule":2,"target":"492d74031b46a2dbdba89517c2392411","type":"equivalent"},{"evidence":{"patch_ids":["32ecc5c79c988e036daa92766ab9c826"],"same_day":true,"statement_hash":"247fbb71eedfaa36fb21d3377adab99beeefb9b4863ba98c464369fe5a6bc0fa"},"rule":2,"target":"74c4a1b4a808ecb95dfae29020191080","type":"equivalent"},{"evidence":{"patch_ids":["32ecc5c79c988e036daa92766ab9c826"],"same_day":true,"statement_hash":"247fbb71eedfaa36fb21d3377adab99beeefb9b4863ba98c464369fe5a6bc0fa"},"rule":2,"target":"de678a747a30bf549de927b53ebbc3e7","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["2a00840e8"],"source_entry_id":"14.24/changes/056","source_hash":"580d52ebee1ac8650b31a23373596ee924576e0da28f00a4747c06e092d5d203","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"247fbb71eedfaa36fb21d3377adab99beeefb9b4863ba98c464369fe5a6bc0fa","text":"改进构造的复制命令中字符串参数的引用处理（Tom Lane）§ 多处生成复制命令的代码在引用复制槽名称及其他需要插入命令的参数时不够谨慎。这可能导致命令出现意外的语法错误。原则上，精心构造的复制槽名称可能导致 SQL 注入；但这种场景在实践中似乎极不可能发生，因为只有高权限用户才能调用复制操作，而且他们没有理由使用来自不可信来源的槽名称。","title":"改进构造的复制命令中字符串参数的引用处理","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["0dbfb8520","2289e65e1","744618346","8c4519c71","acaa100f9","b563fc6bd","c2d34db0a"],"commit_groups":[["0dbfb8520","2289e65e1","744618346","8c4519c71","acaa100f9","b563fc6bd","c2d34db0a"]],"commits":["c2d34db0a"],"cves":[],"db_id":"bcdae249049162a8ecdfc761f53a6e97","html":"\u003cp\u003e\n      修复对空预备事务的逻辑解码（Masahiko Sawada）\u003ca href=\"https://postgr.es/c/c2d34db0a\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      未产生任何可解码更新的预备事务可能导致向输出插件发送\n      \u003ccode\u003eCOMMIT/ROLLBACK PREPARED\u003c/code\u003e，而之前没有发送\n      \u003ccode\u003ePREPARE\u003c/code\u003e。对于内置订阅者，这会破坏复制，其他插件很可能也无法正确处理。\n     \u003c/p\u003e","id":"14.24-47930888824346fa","identity_text":"Fix logical decoding of empty prepared transactions (Masahiko Sawada) A prepared transaction that did not cause any decodable updates could result in sending COMMIT/ROLLBACK PREPARED to the output plugin with no preceding PREPARE. For the built-in subscriber this breaks replication, and other plugins will probably not like it either.","part":"changes","patch_ids":["250335f2e4b78140436eb50ee72b3519"],"related_changes":[{"db_id":"dc4b173044afd038ad380964a01eea2b","evidence":{"patch_ids":["250335f2e4b78140436eb50ee72b3519"],"same_day":true,"statement_hash":"c36e39e101cb85a94e4121d8d84d1da47f5f96917db16c284ba7e090b292fe31"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复对空预备事务的逻辑解码","url":"/docs/compare/?release=18.6#18.6-9c7f709d1f862457","version":"18.6"},{"db_id":"a16d1f65cf232982fca81254425fea0a","evidence":{"patch_ids":["250335f2e4b78140436eb50ee72b3519"],"same_day":true,"statement_hash":"c36e39e101cb85a94e4121d8d84d1da47f5f96917db16c284ba7e090b292fe31"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复对空预备事务的逻辑解码","url":"/docs/compare/?release=17.11#17.11-4fcd3ca4da51d952","version":"17.11"},{"db_id":"84b673d7c9ccb6b9e58b7abd3b0c1465","evidence":{"patch_ids":["250335f2e4b78140436eb50ee72b3519"],"same_day":true,"statement_hash":"c36e39e101cb85a94e4121d8d84d1da47f5f96917db16c284ba7e090b292fe31"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复对空预备事务的逻辑解码","url":"/docs/compare/?release=16.15#16.15-90c2bbc2eb6f8247","version":"16.15"},{"db_id":"de72e0ac47f2ad5c62da3e86aa9fdd8f","evidence":{"patch_ids":["250335f2e4b78140436eb50ee72b3519"],"same_day":true,"statement_hash":"c36e39e101cb85a94e4121d8d84d1da47f5f96917db16c284ba7e090b292fe31"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复对空预备事务的逻辑解码","url":"/docs/compare/?release=15.19#15.19-0420887ee7fc19e1","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["250335f2e4b78140436eb50ee72b3519"],"same_day":true,"statement_hash":"c36e39e101cb85a94e4121d8d84d1da47f5f96917db16c284ba7e090b292fe31"},"rule":2,"target":"84b673d7c9ccb6b9e58b7abd3b0c1465","type":"equivalent"},{"evidence":{"patch_ids":["250335f2e4b78140436eb50ee72b3519"],"same_day":true,"statement_hash":"c36e39e101cb85a94e4121d8d84d1da47f5f96917db16c284ba7e090b292fe31"},"rule":2,"target":"a16d1f65cf232982fca81254425fea0a","type":"equivalent"},{"evidence":{"patch_ids":["250335f2e4b78140436eb50ee72b3519"],"same_day":true,"statement_hash":"c36e39e101cb85a94e4121d8d84d1da47f5f96917db16c284ba7e090b292fe31"},"rule":2,"target":"dc4b173044afd038ad380964a01eea2b","type":"equivalent"},{"evidence":{"patch_ids":["250335f2e4b78140436eb50ee72b3519"],"same_day":true,"statement_hash":"c36e39e101cb85a94e4121d8d84d1da47f5f96917db16c284ba7e090b292fe31"},"rule":2,"target":"de72e0ac47f2ad5c62da3e86aa9fdd8f","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["c2d34db0a"],"source_entry_id":"14.24/changes/057","source_hash":"5140ba75b51c8d78d3ac0494c3a592c09d1dddecf8b9d051a8b791c60d4b81ed","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"c36e39e101cb85a94e4121d8d84d1da47f5f96917db16c284ba7e090b292fe31","text":"修复对空预备事务的逻辑解码（Masahiko Sawada）§ 未产生任何可解码更新的预备事务可能导致向输出插件发送 COMMIT/ROLLBACK PREPARED，而之前没有发送 PREPARE。对于内置订阅者，这会破坏复制，其他插件很可能也无法正确处理。","title":"修复对空预备事务的逻辑解码","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["2cf28d1b9","331016322","5dbeb69bc","5fb3c6389","8f64cc83f","b614de487","bef46aed3"],"commit_groups":[["2cf28d1b9","331016322","5dbeb69bc","5fb3c6389","8f64cc83f","b614de487","bef46aed3"]],"commits":["5fb3c6389"],"cves":[],"db_id":"ea24770278021c00f25a8b13bceb2a2c","html":"\u003cp\u003e\n      修复回退到归档后级联备库无法重新连接的问题（Marco Nenciarini）\u003ca href=\"https://postgr.es/c/5fb3c6389\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      回退到归档恢复后，级联备库可能因\u003cspan\u003e“\u003cspan\u003erequested starting point ... is ahead of the WAL flush\n      position\u003c/span\u003e”\u003c/span\u003e而无法重新连接到其上游备库。\n     \u003c/p\u003e","id":"14.24-744489dc4872d6f1-2","identity_text":"Fix cascading standby reconnect failure after archive fallback (Marco Nenciarini) A cascading standby could fail to reconnect to its upstream standby with requested starting point ... is ahead of the WAL flush position after falling back to archive recovery.","part":"changes","patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"related_changes":[{"db_id":"1ba572e4a9f5584ecce320e293d4b258","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true,"statement_hash":"fb1d8ff1de50924ae1113199938a0ff6d45296b275bab29a749f5176ddbc64ad"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复回退到归档后级联备库无法重新连接的问题","url":"/docs/compare/?release=18.6#18.6-e75bd84b8c02b997","version":"18.6"},{"db_id":"1b34d3e2b18d75096fd2914d3673446c","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"kind":"related","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 to_char() 处理过长时区缩写时发生的缓冲区越界写入","url":"/docs/compare/?release=18.6#18.6-251aba36d837c523","version":"18.6"},{"db_id":"bf82a2510c4dfe4309435e9bce0ab3a4","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"kind":"related","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 to_char() 处理过长时区缩写时发生的缓冲区越界写入","url":"/docs/compare/?release=17.11#17.11-9aaf551ddc6d8e1b","version":"17.11"},{"db_id":"b17ef22f538327cabf0726e1b3f902cc","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true,"statement_hash":"fb1d8ff1de50924ae1113199938a0ff6d45296b275bab29a749f5176ddbc64ad"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复回退到归档后级联备库无法重新连接的问题","url":"/docs/compare/?release=17.11#17.11-8291f394c20dacdc","version":"17.11"},{"db_id":"bfa74492dd2c8ed5f4b0a4321cb63c85","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true,"statement_hash":"fb1d8ff1de50924ae1113199938a0ff6d45296b275bab29a749f5176ddbc64ad"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复回退到归档后级联备库无法重新连接的问题","url":"/docs/compare/?release=16.15#16.15-f0ba58d9c922a403-2","version":"16.15"},{"db_id":"70897dba323af27792543b2311799668","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"kind":"related","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 to_char() 处理过长时区缩写时发生的缓冲区越界写入","url":"/docs/compare/?release=16.15#16.15-f0ba58d9c922a403-1","version":"16.15"},{"db_id":"bfa88fa3d381bbc9b7ee7a8614ea363c","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"kind":"related","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 to_char() 处理过长时区缩写时发生的缓冲区越界写入","url":"/docs/compare/?release=15.19#15.19-4395db3387c7cd38-1","version":"15.19"},{"db_id":"771fa954f9b22168a0764dc12074dadb","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true,"statement_hash":"fb1d8ff1de50924ae1113199938a0ff6d45296b275bab29a749f5176ddbc64ad"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复回退到归档后级联备库无法重新连接的问题","url":"/docs/compare/?release=15.19#15.19-4395db3387c7cd38-2","version":"15.19"},{"db_id":"027ccc17f71deb2b38e14fc8cc82dccd","evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"kind":"related","label":"14.24","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","title":"修复 to_char() 处理过长时区缩写时发生的缓冲区越界写入","url":"/docs/compare/?release=14.24#14.24-744489dc4872d6f1-1","version":"14.24"}],"relations":[{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"rule":2,"target":"027ccc17f71deb2b38e14fc8cc82dccd","type":"related"},{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"rule":2,"target":"1b34d3e2b18d75096fd2914d3673446c","type":"related"},{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true,"statement_hash":"fb1d8ff1de50924ae1113199938a0ff6d45296b275bab29a749f5176ddbc64ad"},"rule":2,"target":"1ba572e4a9f5584ecce320e293d4b258","type":"equivalent"},{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"rule":2,"target":"70897dba323af27792543b2311799668","type":"related"},{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true,"statement_hash":"fb1d8ff1de50924ae1113199938a0ff6d45296b275bab29a749f5176ddbc64ad"},"rule":2,"target":"771fa954f9b22168a0764dc12074dadb","type":"equivalent"},{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true,"statement_hash":"fb1d8ff1de50924ae1113199938a0ff6d45296b275bab29a749f5176ddbc64ad"},"rule":2,"target":"b17ef22f538327cabf0726e1b3f902cc","type":"equivalent"},{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"rule":2,"target":"bf82a2510c4dfe4309435e9bce0ab3a4","type":"related"},{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true,"statement_hash":"fb1d8ff1de50924ae1113199938a0ff6d45296b275bab29a749f5176ddbc64ad"},"rule":2,"target":"bfa74492dd2c8ed5f4b0a4321cb63c85","type":"equivalent"},{"evidence":{"ambiguous_patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"patch_ids":["8d6dc29f16ca43220ac734ee400f5ee9"],"same_day":true},"rule":2,"target":"bfa88fa3d381bbc9b7ee7a8614ea363c","type":"related"}],"section":"变更","section_path":["变更"],"source_commits":["5fb3c6389"],"source_entry_id":"14.24/changes/058","source_hash":"17239bbcc4480e4a386370d365d0c9c7549d06722a33ae44a6ce2d3cff9b6c4a","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"fb1d8ff1de50924ae1113199938a0ff6d45296b275bab29a749f5176ddbc64ad","text":"修复回退到归档后级联备库无法重新连接的问题（Marco Nenciarini）§ 回退到归档恢复后，级联备库可能因“requested starting point ... is ahead of the WAL flush position”而无法重新连接到其上游备库。","title":"修复回退到归档后级联备库无法重新连接的问题","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["080d61f07","51e79222c","968c50845","a4eb59d40","f2081a780","f833c9207"],"commit_groups":[["080d61f07","51e79222c","968c50845","a4eb59d40","f2081a780","f833c9207"]],"commits":["968c50845"],"cves":[],"db_id":"acb52269a9ab57fd523cb58a71e121ec","html":"\u003cp\u003e\n      避免删除临时复制槽时的竞态条件（Zhijie Hou）\u003ca href=\"https://postgr.es/c/968c50845\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      释放槽的代码在释放复制槽后，还会对该槽的共享内存条目执行一些额外更新。这并不安全，因为另一个会话可能立即复用已删除槽的共享内存条目。对于临时槽，现跳过这些更新。\n     \u003c/p\u003e","id":"14.24-b14b0a9051dbe228","identity_text":"Avoid race condition while dropping ephemeral replication slots (Zhijie Hou) The slot-releasing code performed some additional updates to the replication slot's shared-memory entry after releasing the slot. This is unsafe since another session could immediately re-use the dropped slot's shared-memory entry. Skip those updates in the case of an ephemeral slot.","part":"changes","patch_ids":["a917b168697862cb05827b9e9d804879"],"related_changes":[{"db_id":"e7a4717de56195de8e84ae36133e6f25","evidence":{"patch_ids":["a917b168697862cb05827b9e9d804879"],"same_day":true,"statement_hash":"87055d6044521ae3f6b6a74d5c840e75e79be3ee687ddbb92cb366dcb1601282"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"避免删除临时复制槽时的竞态条件","url":"/docs/compare/?release=18.6#18.6-63934e389520e7b8","version":"18.6"},{"db_id":"56d06487f4f5f34eaa3c2bcb9a9adcec","evidence":{"patch_ids":["a917b168697862cb05827b9e9d804879"],"same_day":true,"statement_hash":"87055d6044521ae3f6b6a74d5c840e75e79be3ee687ddbb92cb366dcb1601282"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"避免删除临时复制槽时的竞态条件","url":"/docs/compare/?release=17.11#17.11-1bc3f286c6ac2176","version":"17.11"},{"db_id":"f11ac7346f20210841ca22799f957bad","evidence":{"patch_ids":["a917b168697862cb05827b9e9d804879"],"same_day":true,"statement_hash":"87055d6044521ae3f6b6a74d5c840e75e79be3ee687ddbb92cb366dcb1601282"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"避免删除临时复制槽时的竞态条件","url":"/docs/compare/?release=16.15#16.15-2f83798db4bea0d0","version":"16.15"},{"db_id":"68414efdd4fd28ffb448691fcc350390","evidence":{"patch_ids":["a917b168697862cb05827b9e9d804879"],"same_day":true,"statement_hash":"87055d6044521ae3f6b6a74d5c840e75e79be3ee687ddbb92cb366dcb1601282"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"避免删除临时复制槽时的竞态条件","url":"/docs/compare/?release=15.19#15.19-1a1d1e09b86ffe89","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["a917b168697862cb05827b9e9d804879"],"same_day":true,"statement_hash":"87055d6044521ae3f6b6a74d5c840e75e79be3ee687ddbb92cb366dcb1601282"},"rule":2,"target":"56d06487f4f5f34eaa3c2bcb9a9adcec","type":"equivalent"},{"evidence":{"patch_ids":["a917b168697862cb05827b9e9d804879"],"same_day":true,"statement_hash":"87055d6044521ae3f6b6a74d5c840e75e79be3ee687ddbb92cb366dcb1601282"},"rule":2,"target":"68414efdd4fd28ffb448691fcc350390","type":"equivalent"},{"evidence":{"patch_ids":["a917b168697862cb05827b9e9d804879"],"same_day":true,"statement_hash":"87055d6044521ae3f6b6a74d5c840e75e79be3ee687ddbb92cb366dcb1601282"},"rule":2,"target":"e7a4717de56195de8e84ae36133e6f25","type":"equivalent"},{"evidence":{"patch_ids":["a917b168697862cb05827b9e9d804879"],"same_day":true,"statement_hash":"87055d6044521ae3f6b6a74d5c840e75e79be3ee687ddbb92cb366dcb1601282"},"rule":2,"target":"f11ac7346f20210841ca22799f957bad","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["968c50845"],"source_entry_id":"14.24/changes/059","source_hash":"97d012e109dca80e7f6fa02cb3da969c9a8133f306cdda3007e30f5bb8814834","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"87055d6044521ae3f6b6a74d5c840e75e79be3ee687ddbb92cb366dcb1601282","text":"避免删除临时复制槽时的竞态条件（Zhijie Hou）§ 释放槽的代码在释放复制槽后，还会对该槽的共享内存条目执行一些额外更新。这并不安全，因为另一个会话可能立即复用已删除槽的共享内存条目。对于临时槽，现跳过这些更新。","title":"避免删除临时复制槽时的竞态条件","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["422e54e30","b5f7e7569","d140237da","d9cd9b4d7","e3c4e3746","f2acab534"],"commit_groups":[["422e54e30","b5f7e7569","d140237da","d9cd9b4d7","e3c4e3746","f2acab534"]],"commits":["e3c4e3746"],"cves":[],"db_id":"63a709580f948ad9f6c1df43e037400c","html":"\u003cp\u003e\n      修复逻辑复制表同步期间陈旧的进度报告（Shinya Kato）\u003ca href=\"https://postgr.es/c/e3c4e3746\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      此前，即使数据复制已经完成，订阅者中的\n      \u003ccode\u003epg_stat_progress_copy\u003c/code\u003e 视图仍会把最初的\n      \u003ccode\u003eCOPY\u003c/code\u003e 操作显示为活动状态。在同步追上发布者之前，该陈旧条目会一直可见。\n     \u003c/p\u003e","id":"14.24-ba4de94754320c14","identity_text":"Fix stale progress reports during logical replication table synchronization (Shinya Kato) Previously, the pg_stat_progress_copy view in the subscriber would continue to show the initial COPY operation as active even after the data copy had finished. The stale entry remained visible until synchronization caught up with the publisher.","part":"changes","patch_ids":["1ad4f3b3d40c3980d4aa9a5a98057761"],"related_changes":[{"db_id":"9c326b65f30e4f95b13ee3d7fb3dd796","evidence":{"patch_ids":["1ad4f3b3d40c3980d4aa9a5a98057761"],"same_day":true,"statement_hash":"fed32130a83680b56d3331359c775298c978288d1fa6daf4eb73e2b9d60903bb"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复逻辑复制表同步期间陈旧的进度报告","url":"/docs/compare/?release=18.6#18.6-caa7677e59388ffc","version":"18.6"},{"db_id":"ff38e10dde566b08847e2c27088d3f57","evidence":{"patch_ids":["1ad4f3b3d40c3980d4aa9a5a98057761"],"same_day":true,"statement_hash":"fed32130a83680b56d3331359c775298c978288d1fa6daf4eb73e2b9d60903bb"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复逻辑复制表同步期间陈旧的进度报告","url":"/docs/compare/?release=17.11#17.11-502303232ec37c57","version":"17.11"},{"db_id":"14ad13206c7199257b4a83f16133fde4","evidence":{"patch_ids":["1ad4f3b3d40c3980d4aa9a5a98057761"],"same_day":true,"statement_hash":"fed32130a83680b56d3331359c775298c978288d1fa6daf4eb73e2b9d60903bb"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复逻辑复制表同步期间陈旧的进度报告","url":"/docs/compare/?release=16.15#16.15-d4efc1239b690c46","version":"16.15"},{"db_id":"4b9039b2e6e3f4907e354f148b3975e1","evidence":{"patch_ids":["1ad4f3b3d40c3980d4aa9a5a98057761"],"same_day":true,"statement_hash":"fed32130a83680b56d3331359c775298c978288d1fa6daf4eb73e2b9d60903bb"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复逻辑复制表同步期间陈旧的进度报告","url":"/docs/compare/?release=15.19#15.19-8a44f6ca416f3ae9","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["1ad4f3b3d40c3980d4aa9a5a98057761"],"same_day":true,"statement_hash":"fed32130a83680b56d3331359c775298c978288d1fa6daf4eb73e2b9d60903bb"},"rule":2,"target":"14ad13206c7199257b4a83f16133fde4","type":"equivalent"},{"evidence":{"patch_ids":["1ad4f3b3d40c3980d4aa9a5a98057761"],"same_day":true,"statement_hash":"fed32130a83680b56d3331359c775298c978288d1fa6daf4eb73e2b9d60903bb"},"rule":2,"target":"4b9039b2e6e3f4907e354f148b3975e1","type":"equivalent"},{"evidence":{"patch_ids":["1ad4f3b3d40c3980d4aa9a5a98057761"],"same_day":true,"statement_hash":"fed32130a83680b56d3331359c775298c978288d1fa6daf4eb73e2b9d60903bb"},"rule":2,"target":"9c326b65f30e4f95b13ee3d7fb3dd796","type":"equivalent"},{"evidence":{"patch_ids":["1ad4f3b3d40c3980d4aa9a5a98057761"],"same_day":true,"statement_hash":"fed32130a83680b56d3331359c775298c978288d1fa6daf4eb73e2b9d60903bb"},"rule":2,"target":"ff38e10dde566b08847e2c27088d3f57","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["e3c4e3746"],"source_entry_id":"14.24/changes/060","source_hash":"f9a6732a2fffc404d9d0d88036bb4fa382341269fd69acfe9980153114eea0b6","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"fed32130a83680b56d3331359c775298c978288d1fa6daf4eb73e2b9d60903bb","text":"修复逻辑复制表同步期间陈旧的进度报告（Shinya Kato）§ 此前，即使数据复制已经完成，订阅者中的 pg_stat_progress_copy 视图仍会把最初的 COPY 操作显示为活动状态。在同步追上发布者之前，该陈旧条目会一直可见。","title":"修复逻辑复制表同步期间陈旧的进度报告","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["3854f4afc","4015abe14","9b2a6ccc4","d424d06ed","e430ecc59","e520ad34b"],"commit_groups":[["3854f4afc","4015abe14","9b2a6ccc4","d424d06ed","e430ecc59","e520ad34b"]],"commits":["e520ad34b"],"cves":[],"db_id":"36209251c760c8062b73654dc7225440","html":"\u003cp\u003e\n      在 \u003cspan\u003ePL/Perl\u003c/span\u003e 中，避免处理无效的\n      \u003ccode\u003ePostgreSQL::InServer::ARRAY\u003c/code\u003e 对象时因解引用 NULL 指针而崩溃（Xing Guo）\u003ca href=\"https://postgr.es/c/e520ad34b\"\u003e§\u003c/a\u003e\n\u003c/p\u003e","id":"14.24-a5a4aaaf5e9201f3","identity_text":"In PL/Perl, avoid NULL pointer dereference crash when working with an invalid PostgreSQL::InServer::ARRAY object (Xing Guo)","part":"changes","patch_ids":["9f7af30504d68be229b578f1fb298bab"],"related_changes":[{"db_id":"51220e5b8d23efc0faab7627c0b277a9","evidence":{"patch_ids":["9f7af30504d68be229b578f1fb298bab"],"same_day":true,"statement_hash":"816cdb7f810c7c6b8a9ff3718e2fd5085f754c66d29804028a804f438de99013"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"在 PL/Perl 中，避免处理无效的 PostgreSQL::InServer::ARRAY 对象时因解引用 NULL 指针而崩溃","url":"/docs/compare/?release=18.6#18.6-2efca855d8fe72b9","version":"18.6"},{"db_id":"f143e0fa28a7dd57f718edca2aebc331","evidence":{"patch_ids":["9f7af30504d68be229b578f1fb298bab"],"same_day":true,"statement_hash":"816cdb7f810c7c6b8a9ff3718e2fd5085f754c66d29804028a804f438de99013"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"在 PL/Perl 中，避免处理无效的 PostgreSQL::InServer::ARRAY 对象时因解引用 NULL 指针而崩溃","url":"/docs/compare/?release=17.11#17.11-df7c413d42462d43","version":"17.11"},{"db_id":"eeee2b7678fc0f11a7913ff09b05a182","evidence":{"patch_ids":["9f7af30504d68be229b578f1fb298bab"],"same_day":true,"statement_hash":"816cdb7f810c7c6b8a9ff3718e2fd5085f754c66d29804028a804f438de99013"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"在 PL/Perl 中，避免处理无效的 PostgreSQL::InServer::ARRAY 对象时因解引用 NULL 指针而崩溃","url":"/docs/compare/?release=16.15#16.15-47a73b918734dfa4","version":"16.15"},{"db_id":"e8af57b95d1fb94000fded1a07842242","evidence":{"patch_ids":["9f7af30504d68be229b578f1fb298bab"],"same_day":true,"statement_hash":"816cdb7f810c7c6b8a9ff3718e2fd5085f754c66d29804028a804f438de99013"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"在 PL/Perl 中，避免处理无效的 PostgreSQL::InServer::ARRAY 对象时因解引用 NULL 指针而崩溃","url":"/docs/compare/?release=15.19#15.19-79f5907d62c05f7d","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["9f7af30504d68be229b578f1fb298bab"],"same_day":true,"statement_hash":"816cdb7f810c7c6b8a9ff3718e2fd5085f754c66d29804028a804f438de99013"},"rule":2,"target":"51220e5b8d23efc0faab7627c0b277a9","type":"equivalent"},{"evidence":{"patch_ids":["9f7af30504d68be229b578f1fb298bab"],"same_day":true,"statement_hash":"816cdb7f810c7c6b8a9ff3718e2fd5085f754c66d29804028a804f438de99013"},"rule":2,"target":"e8af57b95d1fb94000fded1a07842242","type":"equivalent"},{"evidence":{"patch_ids":["9f7af30504d68be229b578f1fb298bab"],"same_day":true,"statement_hash":"816cdb7f810c7c6b8a9ff3718e2fd5085f754c66d29804028a804f438de99013"},"rule":2,"target":"eeee2b7678fc0f11a7913ff09b05a182","type":"equivalent"},{"evidence":{"patch_ids":["9f7af30504d68be229b578f1fb298bab"],"same_day":true,"statement_hash":"816cdb7f810c7c6b8a9ff3718e2fd5085f754c66d29804028a804f438de99013"},"rule":2,"target":"f143e0fa28a7dd57f718edca2aebc331","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["e520ad34b"],"source_entry_id":"14.24/changes/061","source_hash":"a322d4a348b0d219ee49453750b756484b50773c300816ef13c4ca5b0e154f89","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"816cdb7f810c7c6b8a9ff3718e2fd5085f754c66d29804028a804f438de99013","text":"在 PL/Perl 中，避免处理无效的 PostgreSQL::InServer::ARRAY 对象时因解引用 NULL 指针而崩溃（Xing Guo）§","title":"在 PL/Perl 中，避免处理无效的 PostgreSQL::InServer::ARRAY 对象时因解引用 NULL 指针而崩溃","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["0b7719f74","12bff46ff","309dc4526","3dc59c173","53482fcb9","8612f0b7c","e92f23bde"],"commit_groups":[["0b7719f74","12bff46ff","3dc59c173","53482fcb9","8612f0b7c","e92f23bde"],["309dc4526"]],"commits":["0b7719f74","309dc4526"],"cves":[],"db_id":"1bcdb1bad2833f07d4dbdd7f3fd25692","html":"\u003cp\u003e\n      在 \u003cspan\u003ePL/Python\u003c/span\u003e 中，正确检查处理序列和映射对象时发生的错误（Richard Guo）\u003ca href=\"https://postgr.es/c/0b7719f74\"\u003e§\u003c/a\u003e\n\u003ca href=\"https://postgr.es/c/309dc4526\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      此前，损坏的对象或未处理的异常可能导致解引用 NULL 指针而崩溃。\n     \u003c/p\u003e","id":"14.24-6e7031366ea0564c","identity_text":"In PL/Python, properly check for errors when working with sequence and mapping objects (Richard Guo) Previously, a broken object or an unhandled exception could result in a NULL pointer dereference crash.","part":"changes","patch_ids":["82aeda458da615307371e8d49ed0abdd","a96949fcfb8c6bac8cc1705ad8aa548e"],"related_changes":[{"db_id":"c6334af88dcf8bb00a0c24becb0804c2","evidence":{"patch_ids":["82aeda458da615307371e8d49ed0abdd","a96949fcfb8c6bac8cc1705ad8aa548e"],"same_day":true,"statement_hash":"33d469b3040d6c202f91bb0448f11a09e5ddae64c76bb00e48ee5634543c64ee"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"在 PL/Python 中，正确检查处理序列和映射对象时发生的错误","url":"/docs/compare/?release=18.6#18.6-728c054c41aaf74d","version":"18.6"},{"db_id":"5ee9ccfc012c4ede5db692562772a752","evidence":{"patch_ids":["82aeda458da615307371e8d49ed0abdd","a96949fcfb8c6bac8cc1705ad8aa548e"],"same_day":true,"statement_hash":"33d469b3040d6c202f91bb0448f11a09e5ddae64c76bb00e48ee5634543c64ee"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"在 PL/Python 中，正确检查处理序列和映射对象时发生的错误","url":"/docs/compare/?release=17.11#17.11-bf867cbb1ebe32c7","version":"17.11"},{"db_id":"c7d8f5074aecff2a6209080fb7907c5d","evidence":{"patch_ids":["82aeda458da615307371e8d49ed0abdd","a96949fcfb8c6bac8cc1705ad8aa548e"],"same_day":true,"statement_hash":"33d469b3040d6c202f91bb0448f11a09e5ddae64c76bb00e48ee5634543c64ee"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"在 PL/Python 中，正确检查处理序列和映射对象时发生的错误","url":"/docs/compare/?release=16.15#16.15-9e4400c5ffdc6cca","version":"16.15"},{"db_id":"7c536b903c2b846285e39de4051f4dda","evidence":{"patch_ids":["82aeda458da615307371e8d49ed0abdd","a96949fcfb8c6bac8cc1705ad8aa548e"],"same_day":true,"statement_hash":"33d469b3040d6c202f91bb0448f11a09e5ddae64c76bb00e48ee5634543c64ee"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"在 PL/Python 中，正确检查处理序列和映射对象时发生的错误","url":"/docs/compare/?release=15.19#15.19-b21d9c4c946d0a95","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["82aeda458da615307371e8d49ed0abdd","a96949fcfb8c6bac8cc1705ad8aa548e"],"same_day":true,"statement_hash":"33d469b3040d6c202f91bb0448f11a09e5ddae64c76bb00e48ee5634543c64ee"},"rule":2,"target":"5ee9ccfc012c4ede5db692562772a752","type":"equivalent"},{"evidence":{"patch_ids":["82aeda458da615307371e8d49ed0abdd","a96949fcfb8c6bac8cc1705ad8aa548e"],"same_day":true,"statement_hash":"33d469b3040d6c202f91bb0448f11a09e5ddae64c76bb00e48ee5634543c64ee"},"rule":2,"target":"7c536b903c2b846285e39de4051f4dda","type":"equivalent"},{"evidence":{"patch_ids":["82aeda458da615307371e8d49ed0abdd","a96949fcfb8c6bac8cc1705ad8aa548e"],"same_day":true,"statement_hash":"33d469b3040d6c202f91bb0448f11a09e5ddae64c76bb00e48ee5634543c64ee"},"rule":2,"target":"c6334af88dcf8bb00a0c24becb0804c2","type":"equivalent"},{"evidence":{"patch_ids":["82aeda458da615307371e8d49ed0abdd","a96949fcfb8c6bac8cc1705ad8aa548e"],"same_day":true,"statement_hash":"33d469b3040d6c202f91bb0448f11a09e5ddae64c76bb00e48ee5634543c64ee"},"rule":2,"target":"c7d8f5074aecff2a6209080fb7907c5d","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["0b7719f74","309dc4526"],"source_entry_id":"14.24/changes/062","source_hash":"7ce11fb7d9f5d4f399d01f6c89792a791e0be2f383fa845ec4a65c641bb38c81","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"33d469b3040d6c202f91bb0448f11a09e5ddae64c76bb00e48ee5634543c64ee","text":"在 PL/Python 中，正确检查处理序列和映射对象时发生的错误（Richard Guo）§ § 此前，损坏的对象或未处理的异常可能导致解引用 NULL 指针而崩溃。","title":"在 PL/Python 中，正确检查处理序列和映射对象时发生的错误","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["05908afcd","0958c3ea4","177a2a2e3","17accbe0f","1b018b5d1","2167302b7","21a6c69ea","27761c015","343594a26","477bc27a5","4ecba7fa3","536512f34","56988064b","5ba13f8c0","6243ea6c3","7532f2117","7f8745543","87c3a79ea","bab0a2db7","bb0a54518","c162810a5","d293f0345","d3888c90a","d3f329656","d9eb70c9c","eeb2940ae","f5f569713","ffd080d94"],"commit_groups":[["05908afcd","177a2a2e3","343594a26","477bc27a5","7f8745543","bb0a54518","d3888c90a"],["0958c3ea4","21a6c69ea","27761c015","536512f34","6243ea6c3","d293f0345","f5f569713"],["17accbe0f","56988064b","5ba13f8c0","7532f2117","87c3a79ea","bab0a2db7","d9eb70c9c"],["1b018b5d1","2167302b7","4ecba7fa3","c162810a5","d3f329656","eeb2940ae","ffd080d94"]],"commits":["1b018b5d1","7532f2117","d3888c90a","f5f569713"],"cves":[],"db_id":"06f569df58220f97a2f065dcabd4567f","html":"\u003cp\u003e\n      在 \u003cspan\u003elibpq\u003c/span\u003e 中，执行\n      \u003ccode\u003epqReadData()\u003c/code\u003e 时始终排空 SSL 或 GSS 解密缓冲区中所有待处理的字节（Jacob Champion）\u003ca href=\"https://postgr.es/c/1b018b5d1\"\u003e§\u003c/a\u003e\n\u003ca href=\"https://postgr.es/c/d3888c90a\"\u003e§\u003c/a\u003e\n\u003ca href=\"https://postgr.es/c/f5f569713\"\u003e§\u003c/a\u003e\n\u003ca href=\"https://postgr.es/c/7532f2117\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      这可以避免一种边界情况：\u003cspan\u003elibpq\u003c/span\u003e 或调用它的应用程序等待套接字上有更多数据到达，而实际上所有数据都已经到达。\n     \u003c/p\u003e","id":"14.24-4595e71bf9e7dee5","identity_text":"In libpq, always drain all pending bytes from the SSL or GSS decryption buffer during pqReadData() (Jacob Champion) This avoids edge cases where libpq or its calling application waits for more data to arrive on the socket, but actually all the data has already arrived.","part":"changes","patch_ids":["0b824057774a76b143d700730eb3e762","cc43f5c943c90e1a9e72f73b95bcd867","dd46de527b9a0334591039f236b5d00d","fdc82cd35935c0be303512dba39e65fe"],"related_changes":[{"db_id":"9168ca39fb7c001030f5bfbd2405a57c","evidence":{"patch_ids":["0b824057774a76b143d700730eb3e762","cc43f5c943c90e1a9e72f73b95bcd867","dd46de527b9a0334591039f236b5d00d","fdc82cd35935c0be303512dba39e65fe"],"same_day":true,"statement_hash":"8034e64e929755fda7f40131432f08c549be661e2525d6f7be6b5192313374be"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"在 libpq 中，执行 pqReadData() 时始终排空 SSL 或 GSS 解密缓冲区中所有待处理的字节","url":"/docs/compare/?release=18.6#18.6-99e20888b0a13dd7","version":"18.6"},{"db_id":"f60154c0b7e3d0ae2ae39034edcdc2c1","evidence":{"patch_ids":["0b824057774a76b143d700730eb3e762","cc43f5c943c90e1a9e72f73b95bcd867","dd46de527b9a0334591039f236b5d00d","fdc82cd35935c0be303512dba39e65fe"],"same_day":true,"statement_hash":"8034e64e929755fda7f40131432f08c549be661e2525d6f7be6b5192313374be"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"在 libpq 中，执行 pqReadData() 时始终排空 SSL 或 GSS 解密缓冲区中所有待处理的字节","url":"/docs/compare/?release=17.11#17.11-ece298bedf647a6a","version":"17.11"},{"db_id":"c77eeb650517090fade53e3cf3d24d00","evidence":{"patch_ids":["0b824057774a76b143d700730eb3e762","cc43f5c943c90e1a9e72f73b95bcd867","dd46de527b9a0334591039f236b5d00d","fdc82cd35935c0be303512dba39e65fe"],"same_day":true,"statement_hash":"8034e64e929755fda7f40131432f08c549be661e2525d6f7be6b5192313374be"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"在 libpq 中，执行 pqReadData() 时始终排空 SSL 或 GSS 解密缓冲区中所有待处理的字节","url":"/docs/compare/?release=16.15#16.15-1f1b12d570b54de1","version":"16.15"},{"db_id":"964e3e4ad6311992f04c2399fc930719","evidence":{"patch_ids":["0b824057774a76b143d700730eb3e762","cc43f5c943c90e1a9e72f73b95bcd867","dd46de527b9a0334591039f236b5d00d","fdc82cd35935c0be303512dba39e65fe"],"same_day":true,"statement_hash":"8034e64e929755fda7f40131432f08c549be661e2525d6f7be6b5192313374be"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"在 libpq 中，执行 pqReadData() 时始终排空 SSL 或 GSS 解密缓冲区中所有待处理的字节","url":"/docs/compare/?release=15.19#15.19-8ddc290da7f872e4","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["0b824057774a76b143d700730eb3e762","cc43f5c943c90e1a9e72f73b95bcd867","dd46de527b9a0334591039f236b5d00d","fdc82cd35935c0be303512dba39e65fe"],"same_day":true,"statement_hash":"8034e64e929755fda7f40131432f08c549be661e2525d6f7be6b5192313374be"},"rule":2,"target":"9168ca39fb7c001030f5bfbd2405a57c","type":"equivalent"},{"evidence":{"patch_ids":["0b824057774a76b143d700730eb3e762","cc43f5c943c90e1a9e72f73b95bcd867","dd46de527b9a0334591039f236b5d00d","fdc82cd35935c0be303512dba39e65fe"],"same_day":true,"statement_hash":"8034e64e929755fda7f40131432f08c549be661e2525d6f7be6b5192313374be"},"rule":2,"target":"964e3e4ad6311992f04c2399fc930719","type":"equivalent"},{"evidence":{"patch_ids":["0b824057774a76b143d700730eb3e762","cc43f5c943c90e1a9e72f73b95bcd867","dd46de527b9a0334591039f236b5d00d","fdc82cd35935c0be303512dba39e65fe"],"same_day":true,"statement_hash":"8034e64e929755fda7f40131432f08c549be661e2525d6f7be6b5192313374be"},"rule":2,"target":"c77eeb650517090fade53e3cf3d24d00","type":"equivalent"},{"evidence":{"patch_ids":["0b824057774a76b143d700730eb3e762","cc43f5c943c90e1a9e72f73b95bcd867","dd46de527b9a0334591039f236b5d00d","fdc82cd35935c0be303512dba39e65fe"],"same_day":true,"statement_hash":"8034e64e929755fda7f40131432f08c549be661e2525d6f7be6b5192313374be"},"rule":2,"target":"f60154c0b7e3d0ae2ae39034edcdc2c1","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["1b018b5d1","7532f2117","d3888c90a","f5f569713"],"source_entry_id":"14.24/changes/063","source_hash":"4926978416899d533d5aff25248ed909479ddbe258673e42afb9c0cd09212b28","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"8034e64e929755fda7f40131432f08c549be661e2525d6f7be6b5192313374be","text":"在 libpq 中，执行 pqReadData() 时始终排空 SSL 或 GSS 解密缓冲区中所有待处理的字节（Jacob Champion）§ § § § 这可以避免一种边界情况：libpq 或调用它的应用程序等待套接字上有更多数据到达，而实际上所有数据都已经到达。","title":"在 libpq 中，执行 pqReadData() 时始终排空 SSL 或 GSS 解密缓冲区中所有待处理的字节","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["0f63b74a4","1b79c8d1a","8d516d2b9","b1ab4bc52","e0511883c","e4183c667"],"commit_groups":[["0f63b74a4","1b79c8d1a","8d516d2b9","b1ab4bc52","e0511883c","e4183c667"]],"commits":["1b79c8d1a"],"cves":[],"db_id":"96f87cdaa195bfc8af2e374fe5cd785d","html":"\u003cp\u003e\n      允许 \u003cspan\u003elibpq\u003c/span\u003e 接受超过 30000 字节的\n      ParameterDescription 消息（Ning Sun）\u003ca href=\"https://postgr.es/c/1b79c8d1a\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      此前，\u003cspan\u003elibpq\u003c/span\u003e 的有效性启发规则并未把这种消息类型视为可能很长。此限制会导致参数超过 7498 个的预备查询失败；这种情况虽然不太可能出现，但系统确实支持。\n     \u003c/p\u003e","id":"14.24-95bdb4ccbaf1b4f7","identity_text":"Allow libpq to accept ParameterDescription messages exceeding 30000 bytes (Ning Sun) Previously, this message type was not among those that libpq's validity heuristics believed could be long. The limit resulted in failure for prepared queries having more than 7498 parameters, which is unlikely but supported.","part":"changes","patch_ids":["b6b26c4c8b27c2138732ea0f070c591b"],"related_changes":[{"db_id":"c1e7d9148740f6776370a4a75311e436","evidence":{"patch_ids":["b6b26c4c8b27c2138732ea0f070c591b"],"same_day":true,"statement_hash":"2bf8dba03893ccac611f0c0a15dfeaa8cb7ed7f18e2fbb58d26e630ffd77a548"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"允许 libpq 接受超过 30000 字节的 ParameterDescription 消息","url":"/docs/compare/?release=18.6#18.6-524638e22a952ee0","version":"18.6"},{"db_id":"97c44cf1d7b9b31d86691416921a75e4","evidence":{"patch_ids":["b6b26c4c8b27c2138732ea0f070c591b"],"same_day":true,"statement_hash":"2bf8dba03893ccac611f0c0a15dfeaa8cb7ed7f18e2fbb58d26e630ffd77a548"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"允许 libpq 接受超过 30000 字节的 ParameterDescription 消息","url":"/docs/compare/?release=17.11#17.11-a3c4e49ff3e57eff","version":"17.11"},{"db_id":"7b36888afdccf5778f4b3d9b3f4d4b19","evidence":{"patch_ids":["b6b26c4c8b27c2138732ea0f070c591b"],"same_day":true,"statement_hash":"2bf8dba03893ccac611f0c0a15dfeaa8cb7ed7f18e2fbb58d26e630ffd77a548"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"允许 libpq 接受超过 30000 字节的 ParameterDescription 消息","url":"/docs/compare/?release=16.15#16.15-d31bbe08eb795d29","version":"16.15"},{"db_id":"5ebbe0622604b80c5219c1c82f7d9aca","evidence":{"patch_ids":["b6b26c4c8b27c2138732ea0f070c591b"],"same_day":true,"statement_hash":"2bf8dba03893ccac611f0c0a15dfeaa8cb7ed7f18e2fbb58d26e630ffd77a548"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"允许 libpq 接受超过 30000 字节的 ParameterDescription 消息","url":"/docs/compare/?release=15.19#15.19-30059fe54da9df27","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["b6b26c4c8b27c2138732ea0f070c591b"],"same_day":true,"statement_hash":"2bf8dba03893ccac611f0c0a15dfeaa8cb7ed7f18e2fbb58d26e630ffd77a548"},"rule":2,"target":"5ebbe0622604b80c5219c1c82f7d9aca","type":"equivalent"},{"evidence":{"patch_ids":["b6b26c4c8b27c2138732ea0f070c591b"],"same_day":true,"statement_hash":"2bf8dba03893ccac611f0c0a15dfeaa8cb7ed7f18e2fbb58d26e630ffd77a548"},"rule":2,"target":"7b36888afdccf5778f4b3d9b3f4d4b19","type":"equivalent"},{"evidence":{"patch_ids":["b6b26c4c8b27c2138732ea0f070c591b"],"same_day":true,"statement_hash":"2bf8dba03893ccac611f0c0a15dfeaa8cb7ed7f18e2fbb58d26e630ffd77a548"},"rule":2,"target":"97c44cf1d7b9b31d86691416921a75e4","type":"equivalent"},{"evidence":{"patch_ids":["b6b26c4c8b27c2138732ea0f070c591b"],"same_day":true,"statement_hash":"2bf8dba03893ccac611f0c0a15dfeaa8cb7ed7f18e2fbb58d26e630ffd77a548"},"rule":2,"target":"c1e7d9148740f6776370a4a75311e436","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["1b79c8d1a"],"source_entry_id":"14.24/changes/064","source_hash":"f102e3b9e3c516575928d37df05031e9be33166de055446731334ca22d702a28","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"2bf8dba03893ccac611f0c0a15dfeaa8cb7ed7f18e2fbb58d26e630ffd77a548","text":"允许 libpq 接受超过 30000 字节的 ParameterDescription 消息（Ning Sun）§ 此前，libpq 的有效性启发规则并未把这种消息类型视为可能很长。此限制会导致参数超过 7498 个的预备查询失败；这种情况虽然不太可能出现，但系统确实支持。","title":"允许 libpq 接受超过 30000 字节的 ParameterDescription 消息","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["081434b0f","4484165b0","4d4b73cfd","9e8fd9f7a","bfeddcf09","fe8c0a762"],"commit_groups":[["081434b0f","4484165b0","4d4b73cfd","9e8fd9f7a","bfeddcf09","fe8c0a762"]],"commits":["9e8fd9f7a"],"cves":[],"db_id":"d5ef1996d66a6c71b921d8881446c413","html":"\u003cp\u003e\n      拒绝 \u003cspan\u003eecpg\u003c/span\u003e 的 \u003ccode\u003eGET/SET\n      DESCRIPTOR\u003c/code\u003e 语句中存在多个描述符首部项（Masashi Kamura）\u003ca href=\"https://postgr.es/c/9e8fd9f7a\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      此前语法允许这种形式，但会生成有缺陷的 C 代码。现调整语法和文档，只允许一个首部项。\n     \u003c/p\u003e","id":"14.24-fb2fbbf70338d662","identity_text":"Reject multiple descriptor header items in ecpg's GET/SET DESCRIPTOR statements (Masashi Kamura) Previously the grammar allowed this syntax, but broken C code was generated. Adjust the grammar and the documentation to allow only one header item.","part":"changes","patch_ids":["4f4dddcf40354c994e2b6668a43af20d"],"related_changes":[{"db_id":"aa20c63216e98c98f035fa86491b5b30","evidence":{"patch_ids":["4f4dddcf40354c994e2b6668a43af20d"],"same_day":true,"statement_hash":"e3bda298ded00b77261ba1c76b32c15895630f65da4a428ed88a0e425a4414cb"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"拒绝 ecpg 的 GET/SET DESCRIPTOR 语句中存在多个描述符首部项","url":"/docs/compare/?release=18.6#18.6-f7ec4316771ce1eb","version":"18.6"},{"db_id":"2d1814d3627bd7de23f302bac9690b77","evidence":{"patch_ids":["4f4dddcf40354c994e2b6668a43af20d"],"same_day":true,"statement_hash":"e3bda298ded00b77261ba1c76b32c15895630f65da4a428ed88a0e425a4414cb"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"拒绝 ecpg 的 GET/SET DESCRIPTOR 语句中存在多个描述符首部项","url":"/docs/compare/?release=17.11#17.11-4edba097ad3499b7","version":"17.11"},{"db_id":"f619d880f7a5f55846623a2af12abad1","evidence":{"patch_ids":["4f4dddcf40354c994e2b6668a43af20d"],"same_day":true,"statement_hash":"e3bda298ded00b77261ba1c76b32c15895630f65da4a428ed88a0e425a4414cb"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"拒绝 ecpg 的 GET/SET DESCRIPTOR 语句中存在多个描述符首部项","url":"/docs/compare/?release=16.15#16.15-0bc3bd0290f2c7ce","version":"16.15"},{"db_id":"e7657a963bd66274d46d2b5a9e11a18a","evidence":{"patch_ids":["4f4dddcf40354c994e2b6668a43af20d"],"same_day":true,"statement_hash":"e3bda298ded00b77261ba1c76b32c15895630f65da4a428ed88a0e425a4414cb"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"拒绝 ecpg 的 GET/SET DESCRIPTOR 语句中存在多个描述符首部项","url":"/docs/compare/?release=15.19#15.19-42a85b1c95cc8d74","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["4f4dddcf40354c994e2b6668a43af20d"],"same_day":true,"statement_hash":"e3bda298ded00b77261ba1c76b32c15895630f65da4a428ed88a0e425a4414cb"},"rule":2,"target":"2d1814d3627bd7de23f302bac9690b77","type":"equivalent"},{"evidence":{"patch_ids":["4f4dddcf40354c994e2b6668a43af20d"],"same_day":true,"statement_hash":"e3bda298ded00b77261ba1c76b32c15895630f65da4a428ed88a0e425a4414cb"},"rule":2,"target":"aa20c63216e98c98f035fa86491b5b30","type":"equivalent"},{"evidence":{"patch_ids":["4f4dddcf40354c994e2b6668a43af20d"],"same_day":true,"statement_hash":"e3bda298ded00b77261ba1c76b32c15895630f65da4a428ed88a0e425a4414cb"},"rule":2,"target":"e7657a963bd66274d46d2b5a9e11a18a","type":"equivalent"},{"evidence":{"patch_ids":["4f4dddcf40354c994e2b6668a43af20d"],"same_day":true,"statement_hash":"e3bda298ded00b77261ba1c76b32c15895630f65da4a428ed88a0e425a4414cb"},"rule":2,"target":"f619d880f7a5f55846623a2af12abad1","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["9e8fd9f7a"],"source_entry_id":"14.24/changes/065","source_hash":"dd36c2182597876189c3d6b0f43360527a229d0789ee08ce26afe2d1ad1b506d","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"e3bda298ded00b77261ba1c76b32c15895630f65da4a428ed88a0e425a4414cb","text":"拒绝 ecpg 的 GET/SET DESCRIPTOR 语句中存在多个描述符首部项（Masashi Kamura）§ 此前语法允许这种形式，但会生成有缺陷的 C 代码。现调整语法和文档，只允许一个首部项。","title":"拒绝 ecpg 的 GET/SET DESCRIPTOR 语句中存在多个描述符首部项","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["022ba5c61","07a6c262b","1edbe6695","3d0d6741d","a4ca91ea1","efd885d05"],"commit_groups":[["022ba5c61","07a6c262b","1edbe6695","3d0d6741d","a4ca91ea1","efd885d05"]],"commits":["a4ca91ea1"],"cves":[],"db_id":"6d353eb0c8713cda0665ed6128c86dc7","html":"\u003cp\u003e\n      使 \u003cspan\u003epsql\u003c/span\u003e 扩展对齐输出格式中的行宽保持一致（Pavel Stehule）\u003ca href=\"https://postgr.es/c/a4ca91ea1\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      当表的数据行比记录标题行窄时，将数据行加宽到与标题行一致，从而避免输出不美观。\n     \u003c/p\u003e","id":"14.24-44ddceba221fbb20","identity_text":"Make line widths match in psql's expanded aligned output format (Pavel Stehule) When the table's data rows are narrower than the record header lines, widen the data rows to match the headers, avoiding unsightly output.","part":"changes","patch_ids":["e1ed38dd6fb22dc6b3c388c344a54963"],"related_changes":[{"db_id":"8c98433b203fc9f697cb6dfef2f22a70","evidence":{"patch_ids":["e1ed38dd6fb22dc6b3c388c344a54963"],"same_day":true,"statement_hash":"bfb36185dbcab5e46aea9291f19969eb343ad3998992659ae2d4c88cea80e5d6"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"使 psql 扩展对齐输出格式中的行宽保持一致","url":"/docs/compare/?release=18.6#18.6-e95d42c0b0a749e2","version":"18.6"},{"db_id":"6a176afe78ae457a5f2e20281e68c1c8","evidence":{"patch_ids":["e1ed38dd6fb22dc6b3c388c344a54963"],"same_day":true,"statement_hash":"bfb36185dbcab5e46aea9291f19969eb343ad3998992659ae2d4c88cea80e5d6"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"使 psql 扩展对齐输出格式中的行宽保持一致","url":"/docs/compare/?release=17.11#17.11-410e9178511c3bd6","version":"17.11"},{"db_id":"73be9a684058fbdc9b8dd586127fd52a","evidence":{"patch_ids":["e1ed38dd6fb22dc6b3c388c344a54963"],"same_day":true,"statement_hash":"bfb36185dbcab5e46aea9291f19969eb343ad3998992659ae2d4c88cea80e5d6"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"使 psql 扩展对齐输出格式中的行宽保持一致","url":"/docs/compare/?release=16.15#16.15-4ef439582c28e17a","version":"16.15"},{"db_id":"58d0bf8b8ffb214d0f6ab86e01e2ee4d","evidence":{"patch_ids":["e1ed38dd6fb22dc6b3c388c344a54963"],"same_day":true,"statement_hash":"bfb36185dbcab5e46aea9291f19969eb343ad3998992659ae2d4c88cea80e5d6"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"使 psql 扩展对齐输出格式中的行宽保持一致","url":"/docs/compare/?release=15.19#15.19-e6841047ca307274","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["e1ed38dd6fb22dc6b3c388c344a54963"],"same_day":true,"statement_hash":"bfb36185dbcab5e46aea9291f19969eb343ad3998992659ae2d4c88cea80e5d6"},"rule":2,"target":"58d0bf8b8ffb214d0f6ab86e01e2ee4d","type":"equivalent"},{"evidence":{"patch_ids":["e1ed38dd6fb22dc6b3c388c344a54963"],"same_day":true,"statement_hash":"bfb36185dbcab5e46aea9291f19969eb343ad3998992659ae2d4c88cea80e5d6"},"rule":2,"target":"6a176afe78ae457a5f2e20281e68c1c8","type":"equivalent"},{"evidence":{"patch_ids":["e1ed38dd6fb22dc6b3c388c344a54963"],"same_day":true,"statement_hash":"bfb36185dbcab5e46aea9291f19969eb343ad3998992659ae2d4c88cea80e5d6"},"rule":2,"target":"73be9a684058fbdc9b8dd586127fd52a","type":"equivalent"},{"evidence":{"patch_ids":["e1ed38dd6fb22dc6b3c388c344a54963"],"same_day":true,"statement_hash":"bfb36185dbcab5e46aea9291f19969eb343ad3998992659ae2d4c88cea80e5d6"},"rule":2,"target":"8c98433b203fc9f697cb6dfef2f22a70","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["a4ca91ea1"],"source_entry_id":"14.24/changes/066","source_hash":"6effcdbd856f5076a04adce5ae6a9bb658adc69170ba63c4d0142a348ed06367","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"bfb36185dbcab5e46aea9291f19969eb343ad3998992659ae2d4c88cea80e5d6","text":"使 psql 扩展对齐输出格式中的行宽保持一致（Pavel Stehule）§ 当表的数据行比记录标题行窄时，将数据行加宽到与标题行一致，从而避免输出不美观。","title":"使 psql 扩展对齐输出格式中的行宽保持一致","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["38afc3dcb","41949c6f3","4e19081da","77aeca802","844bc718a","e6e8a3078","f2d6cf880"],"commit_groups":[["38afc3dcb","41949c6f3","4e19081da","77aeca802","844bc718a","e6e8a3078","f2d6cf880"]],"commits":["4e19081da"],"cves":[],"db_id":"fb027e827736bff10cc532003be6bcee","html":"\u003cp\u003e\n      修复 \u003cspan\u003epsql\u003c/span\u003e 在 \u003ccode\u003e\\l+\u003c/code\u003e 中显示数据库大小时的权限检查（Christoph Berg）\u003ca href=\"https://postgr.es/c/4e19081da\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      底层服务器函数允许具有 \u003ccode\u003epg_read_all_stats\u003c/code\u003e 权限的用户查看所有数据库的大小，即使他们没有 \u003ccode\u003eCONNECT\u003c/code\u003e 权限。但 \u003cspan\u003epsql\u003c/span\u003e 不知道这一规定，除非用户具有\n      \u003ccode\u003eCONNECT\u003c/code\u003e 权限，否则不会调用该函数。\n     \u003c/p\u003e","id":"14.24-88ded4b53cabfeca","identity_text":"Fix psql's privilege check for showing database size in \\l+ (Christoph Berg) The underlying server function permits users who have pg_read_all_stats privileges to see the sizes of all databases, even if they lack CONNECT privilege. But psql was unaware of that provision and would not call the function unless the user has CONNECT privilege.","part":"changes","patch_ids":["987969fa30d6f3f33766c7242f782fcc"],"related_changes":[{"db_id":"141d0e312a20156d1cd7aa5beaa39b84","evidence":{"patch_ids":["987969fa30d6f3f33766c7242f782fcc"],"same_day":true,"statement_hash":"52d0973776d5fe7f0ea2f39f5e8746a9acc9f7423229f4d6af57f5fe0d5f77e6"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 psql 在 \\l+ 中显示数据库大小时的权限检查","url":"/docs/compare/?release=18.6#18.6-f01251105c93da4a","version":"18.6"},{"db_id":"f02d8966daabdbd36db1126f9327767d","evidence":{"patch_ids":["987969fa30d6f3f33766c7242f782fcc"],"same_day":true,"statement_hash":"52d0973776d5fe7f0ea2f39f5e8746a9acc9f7423229f4d6af57f5fe0d5f77e6"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 psql 在 \\l+ 中显示数据库大小时的权限检查","url":"/docs/compare/?release=17.11#17.11-3336152e1ee6addb","version":"17.11"},{"db_id":"8b38bff9895db96300585ebb983568e8","evidence":{"patch_ids":["987969fa30d6f3f33766c7242f782fcc"],"same_day":true,"statement_hash":"52d0973776d5fe7f0ea2f39f5e8746a9acc9f7423229f4d6af57f5fe0d5f77e6"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 psql 在 \\l+ 中显示数据库大小时的权限检查","url":"/docs/compare/?release=16.15#16.15-7be17665f3a07ebd","version":"16.15"},{"db_id":"e7c613c24d691b769e31df57d0463965","evidence":{"patch_ids":["987969fa30d6f3f33766c7242f782fcc"],"same_day":true,"statement_hash":"52d0973776d5fe7f0ea2f39f5e8746a9acc9f7423229f4d6af57f5fe0d5f77e6"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 psql 在 \\l+ 中显示数据库大小时的权限检查","url":"/docs/compare/?release=15.19#15.19-616945ce906c167d","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["987969fa30d6f3f33766c7242f782fcc"],"same_day":true,"statement_hash":"52d0973776d5fe7f0ea2f39f5e8746a9acc9f7423229f4d6af57f5fe0d5f77e6"},"rule":2,"target":"141d0e312a20156d1cd7aa5beaa39b84","type":"equivalent"},{"evidence":{"patch_ids":["987969fa30d6f3f33766c7242f782fcc"],"same_day":true,"statement_hash":"52d0973776d5fe7f0ea2f39f5e8746a9acc9f7423229f4d6af57f5fe0d5f77e6"},"rule":2,"target":"8b38bff9895db96300585ebb983568e8","type":"equivalent"},{"evidence":{"patch_ids":["987969fa30d6f3f33766c7242f782fcc"],"same_day":true,"statement_hash":"52d0973776d5fe7f0ea2f39f5e8746a9acc9f7423229f4d6af57f5fe0d5f77e6"},"rule":2,"target":"e7c613c24d691b769e31df57d0463965","type":"equivalent"},{"evidence":{"patch_ids":["987969fa30d6f3f33766c7242f782fcc"],"same_day":true,"statement_hash":"52d0973776d5fe7f0ea2f39f5e8746a9acc9f7423229f4d6af57f5fe0d5f77e6"},"rule":2,"target":"f02d8966daabdbd36db1126f9327767d","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["4e19081da"],"source_entry_id":"14.24/changes/067","source_hash":"61c1b0cf6d457a5acf4ce09a42fbf868e34b11da92e0c5f157f3bde258fe95c7","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"52d0973776d5fe7f0ea2f39f5e8746a9acc9f7423229f4d6af57f5fe0d5f77e6","text":"修复 psql 在 \\l+ 中显示数据库大小时的权限检查（Christoph Berg）§ 底层服务器函数允许具有 pg_read_all_stats 权限的用户查看所有数据库的大小，即使他们没有 CONNECT 权限。但 psql 不知道这一规定，除非用户具有 CONNECT 权限，否则不会调用该函数。","title":"修复 psql 在 \\l+ 中显示数据库大小时的权限检查","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["2d44bb900","355a4fcf9","558e0de6d","598af79b1","6d4ca6de9","c25737c89","f9afdb6d1"],"commit_groups":[["2d44bb900","355a4fcf9","558e0de6d","598af79b1","6d4ca6de9","c25737c89","f9afdb6d1"]],"commits":["2d44bb900"],"cves":[],"db_id":"b7650aff43943bf8882b3a2f849f6bee","html":"\u003cp\u003e\n      修复 \u003cspan\u003epsql\u003c/span\u003e 对 \u003ccode\u003e\\df\u003c/code\u003e 的\n      TAB 补全，使其也涵盖过程（Erik Wienhold）\u003ca href=\"https://postgr.es/c/2d44bb900\"\u003e§\u003c/a\u003e\n\u003c/p\u003e","id":"14.24-91cbecee9190a8b7","identity_text":"Fix psql's tab completion for \\df to consider procedures too (Erik Wienhold)","part":"changes","patch_ids":["42dfbce6e4e3f60c61e074ef2e0a152b"],"related_changes":[{"db_id":"a6e56de07c090ea331a5f798b3fa0d29","evidence":{"patch_ids":["42dfbce6e4e3f60c61e074ef2e0a152b"],"same_day":true,"statement_hash":"1e5b0a22566f92da2ff5281d6974022db425423987f69e22a54af6a299da7e4c"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 psql 对 \\df 的 TAB 补全，使其也涵盖过程","url":"/docs/compare/?release=18.6#18.6-34779a676e9c08fc","version":"18.6"},{"db_id":"2e71a63a423fe753a49907fea3f3f726","evidence":{"patch_ids":["42dfbce6e4e3f60c61e074ef2e0a152b"],"same_day":true,"statement_hash":"1e5b0a22566f92da2ff5281d6974022db425423987f69e22a54af6a299da7e4c"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 psql 对 \\df 的 TAB 补全，使其也涵盖过程","url":"/docs/compare/?release=17.11#17.11-774191cf1146f3bf","version":"17.11"},{"db_id":"9de93d1e22001ece7792c285e354eead","evidence":{"patch_ids":["42dfbce6e4e3f60c61e074ef2e0a152b"],"same_day":true,"statement_hash":"1e5b0a22566f92da2ff5281d6974022db425423987f69e22a54af6a299da7e4c"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 psql 对 \\df 的 TAB 补全，使其也涵盖过程","url":"/docs/compare/?release=16.15#16.15-4fbdfe9a37c05afb","version":"16.15"},{"db_id":"df69b2e9f052d92dfefda54eacbfc1ea","evidence":{"patch_ids":["42dfbce6e4e3f60c61e074ef2e0a152b"],"same_day":true,"statement_hash":"1e5b0a22566f92da2ff5281d6974022db425423987f69e22a54af6a299da7e4c"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 psql 对 \\df 的 TAB 补全，使其也涵盖过程","url":"/docs/compare/?release=15.19#15.19-3ec1f9729116111b","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["42dfbce6e4e3f60c61e074ef2e0a152b"],"same_day":true,"statement_hash":"1e5b0a22566f92da2ff5281d6974022db425423987f69e22a54af6a299da7e4c"},"rule":2,"target":"2e71a63a423fe753a49907fea3f3f726","type":"equivalent"},{"evidence":{"patch_ids":["42dfbce6e4e3f60c61e074ef2e0a152b"],"same_day":true,"statement_hash":"1e5b0a22566f92da2ff5281d6974022db425423987f69e22a54af6a299da7e4c"},"rule":2,"target":"9de93d1e22001ece7792c285e354eead","type":"equivalent"},{"evidence":{"patch_ids":["42dfbce6e4e3f60c61e074ef2e0a152b"],"same_day":true,"statement_hash":"1e5b0a22566f92da2ff5281d6974022db425423987f69e22a54af6a299da7e4c"},"rule":2,"target":"a6e56de07c090ea331a5f798b3fa0d29","type":"equivalent"},{"evidence":{"patch_ids":["42dfbce6e4e3f60c61e074ef2e0a152b"],"same_day":true,"statement_hash":"1e5b0a22566f92da2ff5281d6974022db425423987f69e22a54af6a299da7e4c"},"rule":2,"target":"df69b2e9f052d92dfefda54eacbfc1ea","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["2d44bb900"],"source_entry_id":"14.24/changes/068","source_hash":"d1249864dd1532698fd7b23d7636a26b0bac235839d61e68a4ed8b4105ed12fc","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"1e5b0a22566f92da2ff5281d6974022db425423987f69e22a54af6a299da7e4c","text":"修复 psql 对 \\df 的 TAB 补全，使其也涵盖过程（Erik Wienhold）§","title":"修复 psql 对 \\df 的 TAB 补全，使其也涵盖过程","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["263d1e6df","5552a15a3","89b4b3ae3","9590dcfca","ba9833a75","ddd12d1a5"],"commit_groups":[["263d1e6df","5552a15a3","89b4b3ae3","9590dcfca","ba9833a75","ddd12d1a5"]],"commits":["5552a15a3"],"cves":[],"db_id":"5e9c0809074f8046eb23cf8c625f723d","html":"\u003cp\u003e\n      对 \u003cspan\u003epg_recvlogical\u003c/span\u003e 输出文件采用源集簇的文件组读权限（Fujii Masao）\u003ca href=\"https://postgr.es/c/5552a15a3\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      文档声称 \u003cspan\u003epg_recvlogical\u003c/span\u003e 会这样做，但它从未实际启用组读权限。\n     \u003c/p\u003e","id":"14.24-af180ca6c48802b4","identity_text":"Use the source cluster's group-read file permissions for pg_recvlogical output files (Fujii Masao) pg_recvlogical was documented to behave this way, but it never actually enabled group-read.","part":"changes","patch_ids":["afbffd5094352bc11bf18ec699c42866"],"related_changes":[{"db_id":"739e2a6e3be37fb134a81099033e7b88","evidence":{"patch_ids":["afbffd5094352bc11bf18ec699c42866"],"same_day":true,"statement_hash":"76c08921b60501e09bdf60cd197949c5372599c542dc2702bad076644bfb808e"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"对 pg_recvlogical 输出文件采用源集簇的文件组读权限","url":"/docs/compare/?release=18.6#18.6-ccc1d394ba38511a","version":"18.6"},{"db_id":"7c4fc2d9507cff650a6e11a00319e316","evidence":{"patch_ids":["afbffd5094352bc11bf18ec699c42866"],"same_day":true,"statement_hash":"76c08921b60501e09bdf60cd197949c5372599c542dc2702bad076644bfb808e"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"对 pg_recvlogical 输出文件采用源集簇的文件组读权限","url":"/docs/compare/?release=17.11#17.11-7a66a4f0ad5abf3d","version":"17.11"},{"db_id":"f4924985d224acc909a53983f158ebbe","evidence":{"patch_ids":["afbffd5094352bc11bf18ec699c42866"],"same_day":true,"statement_hash":"76c08921b60501e09bdf60cd197949c5372599c542dc2702bad076644bfb808e"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"对 pg_recvlogical 输出文件采用源集簇的文件组读权限","url":"/docs/compare/?release=16.15#16.15-f3298ba05de83c9a","version":"16.15"},{"db_id":"46627f579bf31b5d6613ea2ead9a438c","evidence":{"patch_ids":["afbffd5094352bc11bf18ec699c42866"],"same_day":true,"statement_hash":"76c08921b60501e09bdf60cd197949c5372599c542dc2702bad076644bfb808e"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"对 pg_recvlogical 输出文件采用源集簇的文件组读权限","url":"/docs/compare/?release=15.19#15.19-eb042822e75a511b","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["afbffd5094352bc11bf18ec699c42866"],"same_day":true,"statement_hash":"76c08921b60501e09bdf60cd197949c5372599c542dc2702bad076644bfb808e"},"rule":2,"target":"46627f579bf31b5d6613ea2ead9a438c","type":"equivalent"},{"evidence":{"patch_ids":["afbffd5094352bc11bf18ec699c42866"],"same_day":true,"statement_hash":"76c08921b60501e09bdf60cd197949c5372599c542dc2702bad076644bfb808e"},"rule":2,"target":"739e2a6e3be37fb134a81099033e7b88","type":"equivalent"},{"evidence":{"patch_ids":["afbffd5094352bc11bf18ec699c42866"],"same_day":true,"statement_hash":"76c08921b60501e09bdf60cd197949c5372599c542dc2702bad076644bfb808e"},"rule":2,"target":"7c4fc2d9507cff650a6e11a00319e316","type":"equivalent"},{"evidence":{"patch_ids":["afbffd5094352bc11bf18ec699c42866"],"same_day":true,"statement_hash":"76c08921b60501e09bdf60cd197949c5372599c542dc2702bad076644bfb808e"},"rule":2,"target":"f4924985d224acc909a53983f158ebbe","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["5552a15a3"],"source_entry_id":"14.24/changes/069","source_hash":"a27543002286f6621aed008d5cffefce764591e2ec8e79297716a13702193be6","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"76c08921b60501e09bdf60cd197949c5372599c542dc2702bad076644bfb808e","text":"对 pg_recvlogical 输出文件采用源集簇的文件组读权限（Fujii Masao）§ 文档声称 pg_recvlogical 会这样做，但它从未实际启用组读权限。","title":"对 pg_recvlogical 输出文件采用源集簇的文件组读权限","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["4284476c0","897e79486","8abb8a155","af09b18cb","c89a1ca01","da1eff08a"],"commit_groups":[["4284476c0","897e79486","8abb8a155","af09b18cb","c89a1ca01","da1eff08a"]],"commits":["af09b18cb"],"cves":[],"db_id":"cdde56de8d6ffe6162fb47b834f39528","html":"\u003cp\u003e\n      在 \u003ccode\u003econtrib/amcheck\u003c/code\u003e 中，正确处理短头部 varlena\n      Datum（Andrey Borodin）\u003ca href=\"https://postgr.es/c/af09b18cb\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      此错误可能导致验证 B-树索引时执行多余工作，但似乎没有造成更严重的后果。\n     \u003c/p\u003e","id":"14.24-de8368e77c874cdf","identity_text":"In contrib/amcheck, handle short-header varlena datums correctly (Andrey Borodin) This error could result in doing excess work while verifying a btree index, but seems not to have had any worse consequences.","part":"changes","patch_ids":["d7fc6f8977003129b1104cd80d7d07dc"],"related_changes":[{"db_id":"2d507c3ecfdc88b0a54eabbb1a06a7e0","evidence":{"patch_ids":["d7fc6f8977003129b1104cd80d7d07dc"],"same_day":true,"statement_hash":"e472f473c1b1497e339e1735040e13130df76e2534eb81a81dc2b51327126c5d"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"在 contrib/amcheck 中，正确处理短头部 varlena Datum","url":"/docs/compare/?release=18.6#18.6-83d0b073d364f75c","version":"18.6"},{"db_id":"3b8c851869278523310ddb5e0cf66c28","evidence":{"patch_ids":["d7fc6f8977003129b1104cd80d7d07dc"],"same_day":true,"statement_hash":"e472f473c1b1497e339e1735040e13130df76e2534eb81a81dc2b51327126c5d"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"在 contrib/amcheck 中，正确处理短头部 varlena Datum","url":"/docs/compare/?release=17.11#17.11-43173bad4eaa1b27","version":"17.11"},{"db_id":"e3d3da7d18247e58916c107812921cf0","evidence":{"patch_ids":["d7fc6f8977003129b1104cd80d7d07dc"],"same_day":true,"statement_hash":"e472f473c1b1497e339e1735040e13130df76e2534eb81a81dc2b51327126c5d"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"在 contrib/amcheck 中，正确处理短头部 varlena Datum","url":"/docs/compare/?release=16.15#16.15-22551bc799d71de7","version":"16.15"},{"db_id":"45cd63fac27296a03920e2ac709b0ed6","evidence":{"patch_ids":["d7fc6f8977003129b1104cd80d7d07dc"],"same_day":true,"statement_hash":"e472f473c1b1497e339e1735040e13130df76e2534eb81a81dc2b51327126c5d"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"在 contrib/amcheck 中，正确处理短头部 varlena Datum","url":"/docs/compare/?release=15.19#15.19-2872239e215fe909","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["d7fc6f8977003129b1104cd80d7d07dc"],"same_day":true,"statement_hash":"e472f473c1b1497e339e1735040e13130df76e2534eb81a81dc2b51327126c5d"},"rule":2,"target":"2d507c3ecfdc88b0a54eabbb1a06a7e0","type":"equivalent"},{"evidence":{"patch_ids":["d7fc6f8977003129b1104cd80d7d07dc"],"same_day":true,"statement_hash":"e472f473c1b1497e339e1735040e13130df76e2534eb81a81dc2b51327126c5d"},"rule":2,"target":"3b8c851869278523310ddb5e0cf66c28","type":"equivalent"},{"evidence":{"patch_ids":["d7fc6f8977003129b1104cd80d7d07dc"],"same_day":true,"statement_hash":"e472f473c1b1497e339e1735040e13130df76e2534eb81a81dc2b51327126c5d"},"rule":2,"target":"45cd63fac27296a03920e2ac709b0ed6","type":"equivalent"},{"evidence":{"patch_ids":["d7fc6f8977003129b1104cd80d7d07dc"],"same_day":true,"statement_hash":"e472f473c1b1497e339e1735040e13130df76e2534eb81a81dc2b51327126c5d"},"rule":2,"target":"e3d3da7d18247e58916c107812921cf0","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["af09b18cb"],"source_entry_id":"14.24/changes/070","source_hash":"f960ba6ecfa16d080d7f85227745e379ea59d5e44fe90fff7b2d72cba7018620","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"e472f473c1b1497e339e1735040e13130df76e2534eb81a81dc2b51327126c5d","text":"在 contrib/amcheck 中，正确处理短头部 varlena Datum（Andrey Borodin）§ 此错误可能导致验证 B-树索引时执行多余工作，但似乎没有造成更严重的后果。","title":"在 contrib/amcheck 中，正确处理短头部 varlena Datum","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["1e1d07792","255bce448","7d3448961","98dd4406f","a47005f0b","d215d2cc2","d569ccd40"],"commit_groups":[["1e1d07792","255bce448","7d3448961","98dd4406f","a47005f0b","d215d2cc2","d569ccd40"]],"commits":["255bce448"],"cves":[],"db_id":"b9df41b379c5302bb94ed660170eb547","html":"\u003cp\u003e\n      在 \u003ccode\u003econtrib/btree_gist\u003c/code\u003e 中，修复\n      \u003ccode\u003eNaN\u003c/code\u003e 在 \u003ccode\u003efloat4\u003c/code\u003e 和\n      \u003ccode\u003efloat8\u003c/code\u003e 操作符类中的处理（Bill Kim、Tom Lane）\u003ca href=\"https://postgr.es/c/255bce448\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      比较以及 GiST penalty 和 distance 函数都没有考虑\n      \u003ccode\u003eNaN\u003c/code\u003e，因而在遇到该值时会给出错误结果。建议在安装此更新后对 float 列上的 \u003ccode\u003ebtree_gist\u003c/code\u003e 索引重建索引，前提是这些列中可能存在 \u003ccode\u003eNaN\u003c/code\u003e 条目。\n     \u003c/p\u003e","id":"14.24-f5f78593618ce5e6","identity_text":"In contrib/btree_gist, fix NaN handling in the float4 and float8 opclasses (Bill Kim, Tom Lane) Comparisons, as well as the GiST penalty and distance functions, did not account for NaN and would give the wrong answer when handed one. It is recommended to reindex btree_gist indexes on float columns after installing this update, if there is any possibility that there are NaN entries in those columns.","part":"changes","patch_ids":["a41ef98054d9fc11255ff2e1ac2b8d7f"],"related_changes":[{"db_id":"4d9e91353135c760e8823c0cd0ef6409","evidence":{"patch_ids":["a41ef98054d9fc11255ff2e1ac2b8d7f"],"same_day":true,"statement_hash":"faf27e09f191a40fa7cb700d40946951864bfacf5baac3f0510ba15d921d9788"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"在 contrib/btree_gist 中，修复 NaN 在 float4 和 float8 操作符类中的处理","url":"/docs/compare/?release=18.6#18.6-f1427fb43b6c1e77","version":"18.6"},{"db_id":"4cd8eba009b82559add8c3ec81c4961d","evidence":{"patch_ids":["a41ef98054d9fc11255ff2e1ac2b8d7f"],"same_day":true,"statement_hash":"faf27e09f191a40fa7cb700d40946951864bfacf5baac3f0510ba15d921d9788"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"在 contrib/btree_gist 中，修复 NaN 在 float4 和 float8 操作符类中的处理","url":"/docs/compare/?release=17.11#17.11-62f2c81188559a68","version":"17.11"},{"db_id":"eacc61a61a6ef9f06eeceda6f5a96384","evidence":{"patch_ids":["a41ef98054d9fc11255ff2e1ac2b8d7f"],"same_day":true,"statement_hash":"faf27e09f191a40fa7cb700d40946951864bfacf5baac3f0510ba15d921d9788"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"在 contrib/btree_gist 中，修复 NaN 在 float4 和 float8 操作符类中的处理","url":"/docs/compare/?release=16.15#16.15-b6551e55dcd75e6b","version":"16.15"},{"db_id":"b7dd35efd818ab32c6cd15f0eb30fcbe","evidence":{"patch_ids":["a41ef98054d9fc11255ff2e1ac2b8d7f"],"same_day":true,"statement_hash":"faf27e09f191a40fa7cb700d40946951864bfacf5baac3f0510ba15d921d9788"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"在 contrib/btree_gist 中，修复 NaN 在 float4 和 float8 操作符类中的处理","url":"/docs/compare/?release=15.19#15.19-7abab9144a6ecbfe","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["a41ef98054d9fc11255ff2e1ac2b8d7f"],"same_day":true,"statement_hash":"faf27e09f191a40fa7cb700d40946951864bfacf5baac3f0510ba15d921d9788"},"rule":2,"target":"4cd8eba009b82559add8c3ec81c4961d","type":"equivalent"},{"evidence":{"patch_ids":["a41ef98054d9fc11255ff2e1ac2b8d7f"],"same_day":true,"statement_hash":"faf27e09f191a40fa7cb700d40946951864bfacf5baac3f0510ba15d921d9788"},"rule":2,"target":"4d9e91353135c760e8823c0cd0ef6409","type":"equivalent"},{"evidence":{"patch_ids":["a41ef98054d9fc11255ff2e1ac2b8d7f"],"same_day":true,"statement_hash":"faf27e09f191a40fa7cb700d40946951864bfacf5baac3f0510ba15d921d9788"},"rule":2,"target":"b7dd35efd818ab32c6cd15f0eb30fcbe","type":"equivalent"},{"evidence":{"patch_ids":["a41ef98054d9fc11255ff2e1ac2b8d7f"],"same_day":true,"statement_hash":"faf27e09f191a40fa7cb700d40946951864bfacf5baac3f0510ba15d921d9788"},"rule":2,"target":"eacc61a61a6ef9f06eeceda6f5a96384","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["255bce448"],"source_entry_id":"14.24/changes/071","source_hash":"9055937a64271902a7e6e38ddf9f36dbce32ee88f17668f9bc208f1c921964f0","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"faf27e09f191a40fa7cb700d40946951864bfacf5baac3f0510ba15d921d9788","text":"在 contrib/btree_gist 中，修复 NaN 在 float4 和 float8 操作符类中的处理（Bill Kim、Tom Lane）§ 比较以及 GiST penalty 和 distance 函数都没有考虑 NaN，因而在遇到该值时会给出错误结果。建议在安装此更新后对 float 列上的 btree_gist 索引重建索引，前提是这些列中可能存在 NaN 条目。","title":"在 contrib/btree_gist 中，修复 NaN 在 float4 和 float8 操作符类中的处理","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["0663382c9","12c519207","286f9a3ce","86992769e","8f2a1b3d3","eef644e57","fc6649abe"],"commit_groups":[["0663382c9","12c519207","286f9a3ce","86992769e","8f2a1b3d3","eef644e57","fc6649abe"]],"commits":["286f9a3ce"],"cves":[],"db_id":"635407feb25f134fd4b583a750d226fd","html":"\u003cp\u003e\n      在 \u003ccode\u003econtrib/btree_gist\u003c/code\u003e 中，修复使用不等操作符的搜索（Ayush Tiwari）\u003ca href=\"https://postgr.es/c/286f9a3ce\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      对于变长数据类型，扫描非叶索引页的代码使用了错误的比较函数，导致结果错误并可能引发崩溃。\n     \u003c/p\u003e","id":"14.24-294f04d16131e8d5","identity_text":"In contrib/btree_gist, fix searches using a not-equal operator (Ayush Tiwari) For variable-length data types, the code for scanning non-leaf index pages applied the wrong comparison function, leading to wrong results and potentially crashes.","part":"changes","patch_ids":["515eccc8717dfd3bf829ad309ee292d4"],"related_changes":[{"db_id":"6a17d9b57b1644e479653b086d9a3d5b","evidence":{"patch_ids":["515eccc8717dfd3bf829ad309ee292d4"],"same_day":true,"statement_hash":"2be1ae243cd8ebc1e8e722c0adfd189a77f8b7ec2ce84c5f76afc7ac0990135a"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"在 contrib/btree_gist 中，修复使用不等操作符的搜索","url":"/docs/compare/?release=18.6#18.6-ba3d35f49ebe5363","version":"18.6"},{"db_id":"c540681583edc5cf717591e5bf65da83","evidence":{"patch_ids":["515eccc8717dfd3bf829ad309ee292d4"],"same_day":true,"statement_hash":"2be1ae243cd8ebc1e8e722c0adfd189a77f8b7ec2ce84c5f76afc7ac0990135a"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"在 contrib/btree_gist 中，修复使用不等操作符的搜索","url":"/docs/compare/?release=17.11#17.11-bb79dbfaaf4bd7a5","version":"17.11"},{"db_id":"72b13e01606442471a1d73d64267d5db","evidence":{"patch_ids":["515eccc8717dfd3bf829ad309ee292d4"],"same_day":true,"statement_hash":"2be1ae243cd8ebc1e8e722c0adfd189a77f8b7ec2ce84c5f76afc7ac0990135a"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"在 contrib/btree_gist 中，修复使用不等操作符的搜索","url":"/docs/compare/?release=16.15#16.15-6fd7a5c21c3e59df","version":"16.15"},{"db_id":"b8f3ffff9bd8249a29d2857d5a2613d1","evidence":{"patch_ids":["515eccc8717dfd3bf829ad309ee292d4"],"same_day":true,"statement_hash":"2be1ae243cd8ebc1e8e722c0adfd189a77f8b7ec2ce84c5f76afc7ac0990135a"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"在 contrib/btree_gist 中，修复使用不等操作符的搜索","url":"/docs/compare/?release=15.19#15.19-400657eaecfa8eb8","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["515eccc8717dfd3bf829ad309ee292d4"],"same_day":true,"statement_hash":"2be1ae243cd8ebc1e8e722c0adfd189a77f8b7ec2ce84c5f76afc7ac0990135a"},"rule":2,"target":"6a17d9b57b1644e479653b086d9a3d5b","type":"equivalent"},{"evidence":{"patch_ids":["515eccc8717dfd3bf829ad309ee292d4"],"same_day":true,"statement_hash":"2be1ae243cd8ebc1e8e722c0adfd189a77f8b7ec2ce84c5f76afc7ac0990135a"},"rule":2,"target":"72b13e01606442471a1d73d64267d5db","type":"equivalent"},{"evidence":{"patch_ids":["515eccc8717dfd3bf829ad309ee292d4"],"same_day":true,"statement_hash":"2be1ae243cd8ebc1e8e722c0adfd189a77f8b7ec2ce84c5f76afc7ac0990135a"},"rule":2,"target":"b8f3ffff9bd8249a29d2857d5a2613d1","type":"equivalent"},{"evidence":{"patch_ids":["515eccc8717dfd3bf829ad309ee292d4"],"same_day":true,"statement_hash":"2be1ae243cd8ebc1e8e722c0adfd189a77f8b7ec2ce84c5f76afc7ac0990135a"},"rule":2,"target":"c540681583edc5cf717591e5bf65da83","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["286f9a3ce"],"source_entry_id":"14.24/changes/072","source_hash":"69754b0dad2c9ad338cbd9cab7b9637946d0089eb45e5296cca40c0cdcf7f836","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"2be1ae243cd8ebc1e8e722c0adfd189a77f8b7ec2ce84c5f76afc7ac0990135a","text":"在 contrib/btree_gist 中，修复使用不等操作符的搜索（Ayush Tiwari）§ 对于变长数据类型，扫描非叶索引页的代码使用了错误的比较函数，导致结果错误并可能引发崩溃。","title":"在 contrib/btree_gist 中，修复使用不等操作符的搜索","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["1f6b2295f","3df0b7755","4efef9d18","4fbbabb0a","60a1d712a","639fff511","a6f23c3ad","b0f3465b6","c0f17b04d","d65cf6f80","da82fbb8f","e3b7a43fa"],"commit_groups":[["1f6b2295f","4efef9d18","4fbbabb0a","60a1d712a","c0f17b04d","d65cf6f80"],["3df0b7755","639fff511","a6f23c3ad","b0f3465b6","da82fbb8f","e3b7a43fa"]],"commits":["1f6b2295f","639fff511"],"cves":[],"db_id":"94eaadfc76909fd86106e4f1ca7ca2ff","html":"\u003cp\u003e\n      修复以下模块中缺少防护的递归和循环：\u003ccode\u003econtrib/hstore_plperl\u003c/code\u003e、\u003ccode\u003econtrib/jsonb_plperl\u003c/code\u003e 和\n      \u003ccode\u003econtrib/jsonb_plpython\u003c/code\u003e（Aleksander Alekseev）\u003ca href=\"https://postgr.es/c/639fff511\"\u003e§\u003c/a\u003e\n\u003ca href=\"https://postgr.es/c/1f6b2295f\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      防止处理深度嵌套的 \u003ccode\u003ejsonb\u003c/code\u003e 值时发生栈溢出，并允许中断尝试解引用 Perl 对象引用的环状链时造成的无限循环。\n     \u003c/p\u003e","id":"14.24-fc345aadeb17306f","identity_text":"Fix unguarded recursion and loops in contrib/hstore_plperl, contrib/jsonb_plperl, and contrib/jsonb_plpython (Aleksander Alekseev) Prevent stack overflow when dealing with deeply nested jsonb values, and allow interruption of the infinite loop caused when attempting to dereference circular chains of Perl object references.","part":"changes","patch_ids":["06d3f82c811dcdc72352268391913b6d","d2e482ea690658ce247d390c41c898b7"],"related_changes":[{"db_id":"e84c01132f8e26fec06fb2c24d693754","evidence":{"patch_ids":["06d3f82c811dcdc72352268391913b6d","d2e482ea690658ce247d390c41c898b7"],"same_day":true,"statement_hash":"7097b151e48a64281451cfa04b6e3d236b5b30fd3c3c7d17dc03685399c5d1a3"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复以下模块中缺少防护的递归和循环：contrib/hstore_plperl、contrib/jsonb_plperl 和 contrib/jsonb_plpython","url":"/docs/compare/?release=18.6#18.6-3bbe012702953660","version":"18.6"},{"db_id":"595e055e71880ae192e2de47f74a1291","evidence":{"patch_ids":["06d3f82c811dcdc72352268391913b6d","d2e482ea690658ce247d390c41c898b7"],"same_day":true,"statement_hash":"7097b151e48a64281451cfa04b6e3d236b5b30fd3c3c7d17dc03685399c5d1a3"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复以下模块中缺少防护的递归和循环：contrib/hstore_plperl、contrib/jsonb_plperl 和 contrib/jsonb_plpython","url":"/docs/compare/?release=17.11#17.11-f475bfd70799c254","version":"17.11"},{"db_id":"e764a2169f298518893448497eb58f37","evidence":{"patch_ids":["06d3f82c811dcdc72352268391913b6d","d2e482ea690658ce247d390c41c898b7"],"same_day":true,"statement_hash":"7097b151e48a64281451cfa04b6e3d236b5b30fd3c3c7d17dc03685399c5d1a3"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复以下模块中缺少防护的递归和循环：contrib/hstore_plperl、contrib/jsonb_plperl 和 contrib/jsonb_plpython","url":"/docs/compare/?release=16.15#16.15-fa0a92fe6f6d8b62","version":"16.15"},{"db_id":"f6efa9b4ffedab334fa7ffa327afa7eb","evidence":{"patch_ids":["06d3f82c811dcdc72352268391913b6d","d2e482ea690658ce247d390c41c898b7"],"same_day":true,"statement_hash":"7097b151e48a64281451cfa04b6e3d236b5b30fd3c3c7d17dc03685399c5d1a3"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复以下模块中缺少防护的递归和循环：contrib/hstore_plperl、contrib/jsonb_plperl 和 contrib/jsonb_plpython","url":"/docs/compare/?release=15.19#15.19-a4622748e0475d43","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["06d3f82c811dcdc72352268391913b6d","d2e482ea690658ce247d390c41c898b7"],"same_day":true,"statement_hash":"7097b151e48a64281451cfa04b6e3d236b5b30fd3c3c7d17dc03685399c5d1a3"},"rule":2,"target":"595e055e71880ae192e2de47f74a1291","type":"equivalent"},{"evidence":{"patch_ids":["06d3f82c811dcdc72352268391913b6d","d2e482ea690658ce247d390c41c898b7"],"same_day":true,"statement_hash":"7097b151e48a64281451cfa04b6e3d236b5b30fd3c3c7d17dc03685399c5d1a3"},"rule":2,"target":"e764a2169f298518893448497eb58f37","type":"equivalent"},{"evidence":{"patch_ids":["06d3f82c811dcdc72352268391913b6d","d2e482ea690658ce247d390c41c898b7"],"same_day":true,"statement_hash":"7097b151e48a64281451cfa04b6e3d236b5b30fd3c3c7d17dc03685399c5d1a3"},"rule":2,"target":"e84c01132f8e26fec06fb2c24d693754","type":"equivalent"},{"evidence":{"patch_ids":["06d3f82c811dcdc72352268391913b6d","d2e482ea690658ce247d390c41c898b7"],"same_day":true,"statement_hash":"7097b151e48a64281451cfa04b6e3d236b5b30fd3c3c7d17dc03685399c5d1a3"},"rule":2,"target":"f6efa9b4ffedab334fa7ffa327afa7eb","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["1f6b2295f","639fff511"],"source_entry_id":"14.24/changes/073","source_hash":"a58d1374b7550e11ccc5f00d8e4d51d2d2aac80ceae760c458dddb969a010726","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"7097b151e48a64281451cfa04b6e3d236b5b30fd3c3c7d17dc03685399c5d1a3","text":"修复以下模块中缺少防护的递归和循环：contrib/hstore_plperl、contrib/jsonb_plperl 和 contrib/jsonb_plpython（Aleksander Alekseev）§ § 防止处理深度嵌套的 jsonb 值时发生栈溢出，并允许中断尝试解引用 Perl 对象引用的环状链时造成的无限循环。","title":"修复以下模块中缺少防护的递归和循环：contrib/hstore_plperl、contrib/jsonb_plperl 和 contrib/jsonb_plpython","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["273be484a","524cc0f63","702a6d5f6","94b57ab54","a96b051a9","e7544c518"],"commit_groups":[["273be484a","524cc0f63","702a6d5f6","94b57ab54","a96b051a9","e7544c518"]],"commits":["a96b051a9"],"cves":[],"db_id":"441b437853466f13724bc66579a3d9c5","html":"\u003cp\u003e\n      修复 \u003ccode\u003econtrib/intarray\u003c/code\u003e 中遗漏释放统计信息 catcache\n      条目的问题（Man Zeng）\u003ca href=\"https://postgr.es/c/a96b051a9\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      此疏漏会导致\u003cspan\u003e“\u003cspan\u003eresource was not closed:\n      cache pg_statistic\u003c/span\u003e”\u003c/span\u003e之类的警告。\n     \u003c/p\u003e","id":"14.24-88b2eacb476e6d44","identity_text":"Fix missed release of statistics catcache entry in contrib/intarray (Man Zeng) This oversight led to warnings like resource was not closed: cache pg_statistic.","part":"changes","patch_ids":["ed91737595bc2b3f155e28dcd1a2eea2"],"related_changes":[{"db_id":"531f88cd6dd693227e011632166ae87b","evidence":{"patch_ids":["ed91737595bc2b3f155e28dcd1a2eea2"],"same_day":true,"statement_hash":"f94e4dacb87f6c952276d56347322f0e3b34e2c00c7f4e555ef6c2806632dec3"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 contrib/intarray 中遗漏释放统计信息 catcache 条目的问题","url":"/docs/compare/?release=18.6#18.6-69c78fae0c5ccd69","version":"18.6"},{"db_id":"29b63a7300df9efc4d5ac1e96dc34cb7","evidence":{"patch_ids":["ed91737595bc2b3f155e28dcd1a2eea2"],"same_day":true,"statement_hash":"f94e4dacb87f6c952276d56347322f0e3b34e2c00c7f4e555ef6c2806632dec3"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 contrib/intarray 中遗漏释放统计信息 catcache 条目的问题","url":"/docs/compare/?release=17.11#17.11-c1417114cda9dd52","version":"17.11"},{"db_id":"a4dfb26ea114f9668f1e953f8895f530","evidence":{"patch_ids":["ed91737595bc2b3f155e28dcd1a2eea2"],"same_day":true,"statement_hash":"f94e4dacb87f6c952276d56347322f0e3b34e2c00c7f4e555ef6c2806632dec3"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 contrib/intarray 中遗漏释放统计信息 catcache 条目的问题","url":"/docs/compare/?release=16.15#16.15-1e6f6b698ab8119b","version":"16.15"},{"db_id":"2c29490e6377bc8f4bb49b5d5ca76323","evidence":{"patch_ids":["ed91737595bc2b3f155e28dcd1a2eea2"],"same_day":true,"statement_hash":"f94e4dacb87f6c952276d56347322f0e3b34e2c00c7f4e555ef6c2806632dec3"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 contrib/intarray 中遗漏释放统计信息 catcache 条目的问题","url":"/docs/compare/?release=15.19#15.19-ccb32043172a0059","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["ed91737595bc2b3f155e28dcd1a2eea2"],"same_day":true,"statement_hash":"f94e4dacb87f6c952276d56347322f0e3b34e2c00c7f4e555ef6c2806632dec3"},"rule":2,"target":"29b63a7300df9efc4d5ac1e96dc34cb7","type":"equivalent"},{"evidence":{"patch_ids":["ed91737595bc2b3f155e28dcd1a2eea2"],"same_day":true,"statement_hash":"f94e4dacb87f6c952276d56347322f0e3b34e2c00c7f4e555ef6c2806632dec3"},"rule":2,"target":"2c29490e6377bc8f4bb49b5d5ca76323","type":"equivalent"},{"evidence":{"patch_ids":["ed91737595bc2b3f155e28dcd1a2eea2"],"same_day":true,"statement_hash":"f94e4dacb87f6c952276d56347322f0e3b34e2c00c7f4e555ef6c2806632dec3"},"rule":2,"target":"531f88cd6dd693227e011632166ae87b","type":"equivalent"},{"evidence":{"patch_ids":["ed91737595bc2b3f155e28dcd1a2eea2"],"same_day":true,"statement_hash":"f94e4dacb87f6c952276d56347322f0e3b34e2c00c7f4e555ef6c2806632dec3"},"rule":2,"target":"a4dfb26ea114f9668f1e953f8895f530","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["a96b051a9"],"source_entry_id":"14.24/changes/074","source_hash":"45b8bf04c14d721d7c12ce42f7c23205ed784cbbfb91c1914aa9b46fe1c1bd6e","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"f94e4dacb87f6c952276d56347322f0e3b34e2c00c7f4e555ef6c2806632dec3","text":"修复 contrib/intarray 中遗漏释放统计信息 catcache 条目的问题（Man Zeng）§ 此疏漏会导致“resource was not closed: cache pg_statistic”之类的警告。","title":"修复 contrib/intarray 中遗漏释放统计信息 catcache 条目的问题","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["1bec6b1c1","3f3280491","aca944e33","c391c00d9","c3e36a9a5","f528a5606"],"commit_groups":[["1bec6b1c1","3f3280491","aca944e33","c391c00d9","c3e36a9a5","f528a5606"]],"commits":["f528a5606"],"cves":[],"db_id":"48fe7f3222eda75ec840ab2668d55093","html":"\u003cp\u003e\n      在 \u003ccode\u003econtrib/ltree\u003c/code\u003e 中，修复比较时的整数溢出（Ayush Tiwari）\u003ca href=\"https://postgr.es/c/f528a5606\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      包含超过约 14,653 个标签的 \u003ccode\u003eltree\u003c/code\u003e 值会因溢出而得到错误的比较结果。如果 B-树索引包含这类值，它很可能已经损坏，应在安装此更新后重建索引。\n     \u003c/p\u003e","id":"14.24-74f51924f346b861","identity_text":"In contrib/ltree, fix integer overflow in comparisons (Ayush Tiwari) ltree values containing more than about 14,653 labels resulted in wrong comparison answers due to overflow. If a btree index contains such values, it is probably corrupt and should be reindexed after installing this update.","part":"changes","patch_ids":["81c4c385ffbd98f111a552cae708d804"],"related_changes":[{"db_id":"888fddf9fe911dead6a68c55c98b9295","evidence":{"patch_ids":["81c4c385ffbd98f111a552cae708d804"],"same_day":true,"statement_hash":"c38e1cee6bb8614366f4396766b59cb9e1991d5646798456e57e0b3b5c284883"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"在 contrib/ltree 中，修复比较时的整数溢出","url":"/docs/compare/?release=18.6#18.6-b2444fb7d252ecb2","version":"18.6"},{"db_id":"faeb6c3b8ab3db22ba871dc683772018","evidence":{"patch_ids":["81c4c385ffbd98f111a552cae708d804"],"same_day":true,"statement_hash":"c38e1cee6bb8614366f4396766b59cb9e1991d5646798456e57e0b3b5c284883"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"在 contrib/ltree 中，修复比较时的整数溢出","url":"/docs/compare/?release=17.11#17.11-390646d2843a7323","version":"17.11"},{"db_id":"f0507c88031aeac9ab37c3874a1e91d1","evidence":{"patch_ids":["81c4c385ffbd98f111a552cae708d804"],"same_day":true,"statement_hash":"c38e1cee6bb8614366f4396766b59cb9e1991d5646798456e57e0b3b5c284883"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"在 contrib/ltree 中，修复比较时的整数溢出","url":"/docs/compare/?release=16.15#16.15-b86543a0103877e6","version":"16.15"},{"db_id":"708292f2ccdab3377b60d76cdaa5a7e5","evidence":{"patch_ids":["81c4c385ffbd98f111a552cae708d804"],"same_day":true,"statement_hash":"c38e1cee6bb8614366f4396766b59cb9e1991d5646798456e57e0b3b5c284883"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"在 contrib/ltree 中，修复比较时的整数溢出","url":"/docs/compare/?release=15.19#15.19-deed600a17b6b295","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["81c4c385ffbd98f111a552cae708d804"],"same_day":true,"statement_hash":"c38e1cee6bb8614366f4396766b59cb9e1991d5646798456e57e0b3b5c284883"},"rule":2,"target":"708292f2ccdab3377b60d76cdaa5a7e5","type":"equivalent"},{"evidence":{"patch_ids":["81c4c385ffbd98f111a552cae708d804"],"same_day":true,"statement_hash":"c38e1cee6bb8614366f4396766b59cb9e1991d5646798456e57e0b3b5c284883"},"rule":2,"target":"888fddf9fe911dead6a68c55c98b9295","type":"equivalent"},{"evidence":{"patch_ids":["81c4c385ffbd98f111a552cae708d804"],"same_day":true,"statement_hash":"c38e1cee6bb8614366f4396766b59cb9e1991d5646798456e57e0b3b5c284883"},"rule":2,"target":"f0507c88031aeac9ab37c3874a1e91d1","type":"equivalent"},{"evidence":{"patch_ids":["81c4c385ffbd98f111a552cae708d804"],"same_day":true,"statement_hash":"c38e1cee6bb8614366f4396766b59cb9e1991d5646798456e57e0b3b5c284883"},"rule":2,"target":"faeb6c3b8ab3db22ba871dc683772018","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["f528a5606"],"source_entry_id":"14.24/changes/075","source_hash":"ae03868465d5cd5ec62eedde4cf4dd49c44696846204660a28258e41582e9b52","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"c38e1cee6bb8614366f4396766b59cb9e1991d5646798456e57e0b3b5c284883","text":"在 contrib/ltree 中，修复比较时的整数溢出（Ayush Tiwari）§ 包含超过约 14,653 个标签的 ltree 值会因溢出而得到错误的比较结果。如果 B-树索引包含这类值，它很可能已经损坏，应在安装此更新后重建索引。","title":"在 contrib/ltree 中，修复比较时的整数溢出","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["0bcf19c9e","193a4ded9","1eda3eb07","2b09f8a91","51f63ba2b","daf8bc7d4"],"commit_groups":[["0bcf19c9e","193a4ded9","1eda3eb07","2b09f8a91","51f63ba2b","daf8bc7d4"]],"commits":["1eda3eb07"],"cves":[],"db_id":"f14b53949f2fa5150ed94f6fdbc3af9e","html":"\u003cp\u003e\n      修复 \u003ccode\u003econtrib/pg_surgery\u003c/code\u003e 的\n      \u003ccode\u003eheap_force_kill\u003c/code\u003e 和\n      \u003ccode\u003eheap_force_freeze\u003c/code\u003e 函数中的数组越界写入（Michael Paquier）\u003ca href=\"https://postgr.es/c/1eda3eb07\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      尝试更改偏移号等于 MaxHeapTuplesPerPage 的 TID 时，会在已分配数组的末尾之外写入一个字节，可能导致服务器崩溃。\n     \u003c/p\u003e","id":"14.24-5408ce883ba1bd1f","identity_text":"Fix array overrun in contrib/pg_surgery's heap_force_kill and heap_force_freeze functions (Michael Paquier) Attempting to change a TID whose offset number equals MaxHeapTuplesPerPage wrote one byte past the end of the allocated array, potentially crashing the server.","part":"changes","patch_ids":["eb798217c4bf865d1840668bc6612f6d"],"related_changes":[{"db_id":"34c6abdf99153564a44d057cfe4b6dac","evidence":{"patch_ids":["eb798217c4bf865d1840668bc6612f6d"],"same_day":true,"statement_hash":"0c283cf21db62b067b9adc880d22c26404e9404758237c1adc833a4aa35981ae"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 contrib/pg_surgery 的 heap_force_kill 和 heap_force_freeze 函数中的数组越界写入","url":"/docs/compare/?release=18.6#18.6-2f1813bf59f642ea","version":"18.6"},{"db_id":"bfda1df269b11b96600aa8d604c7a26a","evidence":{"patch_ids":["eb798217c4bf865d1840668bc6612f6d"],"same_day":true,"statement_hash":"0c283cf21db62b067b9adc880d22c26404e9404758237c1adc833a4aa35981ae"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 contrib/pg_surgery 的 heap_force_kill 和 heap_force_freeze 函数中的数组越界写入","url":"/docs/compare/?release=17.11#17.11-e5e220ac4d63838b","version":"17.11"},{"db_id":"dd33ec95e198e9db76b741cb251151f9","evidence":{"patch_ids":["eb798217c4bf865d1840668bc6612f6d"],"same_day":true,"statement_hash":"0c283cf21db62b067b9adc880d22c26404e9404758237c1adc833a4aa35981ae"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 contrib/pg_surgery 的 heap_force_kill 和 heap_force_freeze 函数中的数组越界写入","url":"/docs/compare/?release=16.15#16.15-f726c19b6da9ae90","version":"16.15"},{"db_id":"68b2c21176cad03670e2c5de5fd39431","evidence":{"patch_ids":["eb798217c4bf865d1840668bc6612f6d"],"same_day":true,"statement_hash":"0c283cf21db62b067b9adc880d22c26404e9404758237c1adc833a4aa35981ae"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 contrib/pg_surgery 的 heap_force_kill 和 heap_force_freeze 函数中的数组越界写入","url":"/docs/compare/?release=15.19#15.19-d4a24c821b2c9a40","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["eb798217c4bf865d1840668bc6612f6d"],"same_day":true,"statement_hash":"0c283cf21db62b067b9adc880d22c26404e9404758237c1adc833a4aa35981ae"},"rule":2,"target":"34c6abdf99153564a44d057cfe4b6dac","type":"equivalent"},{"evidence":{"patch_ids":["eb798217c4bf865d1840668bc6612f6d"],"same_day":true,"statement_hash":"0c283cf21db62b067b9adc880d22c26404e9404758237c1adc833a4aa35981ae"},"rule":2,"target":"68b2c21176cad03670e2c5de5fd39431","type":"equivalent"},{"evidence":{"patch_ids":["eb798217c4bf865d1840668bc6612f6d"],"same_day":true,"statement_hash":"0c283cf21db62b067b9adc880d22c26404e9404758237c1adc833a4aa35981ae"},"rule":2,"target":"bfda1df269b11b96600aa8d604c7a26a","type":"equivalent"},{"evidence":{"patch_ids":["eb798217c4bf865d1840668bc6612f6d"],"same_day":true,"statement_hash":"0c283cf21db62b067b9adc880d22c26404e9404758237c1adc833a4aa35981ae"},"rule":2,"target":"dd33ec95e198e9db76b741cb251151f9","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["1eda3eb07"],"source_entry_id":"14.24/changes/076","source_hash":"461be0ef7e2be1fc31d30ecf9b042c2f33c9fb5656cd8e6050710892f6f1b18f","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"0c283cf21db62b067b9adc880d22c26404e9404758237c1adc833a4aa35981ae","text":"修复 contrib/pg_surgery 的 heap_force_kill 和 heap_force_freeze 函数中的数组越界写入（Michael Paquier）§ 尝试更改偏移号等于 MaxHeapTuplesPerPage 的 TID 时，会在已分配数组的末尾之外写入一个字节，可能导致服务器崩溃。","title":"修复 contrib/pg_surgery 的 heap_force_kill 和 heap_force_freeze 函数中的数组越界写入","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["19f0391df","1b6c99d96","1f24c8237","346fbdcc2","395700f48","e9d53cf45","eb28b6f24"],"commit_groups":[["19f0391df","1b6c99d96","1f24c8237","346fbdcc2","395700f48","e9d53cf45","eb28b6f24"]],"commits":["e9d53cf45"],"cves":[],"db_id":"ff158bb4d522b01e710f1a52fc58ebac","html":"\u003cp\u003e\n      在 \u003ccode\u003econtrib/pg_surgery\u003c/code\u003e 中，避免包含超过 64K 个元素的 TID 数组导致无限循环（Andrey Rachitskiy）\u003ca href=\"https://postgr.es/c/e9d53cf45\"\u003e§\u003c/a\u003e\n\u003c/p\u003e","id":"14.24-db516dd9e437ea28","identity_text":"In contrib/pg_surgery, avoid infinite loop with TID arrays having more than 64K elements (Andrey Rachitskiy)","part":"changes","patch_ids":["eee9eeea4b735f7e05d2171f399f90b7"],"related_changes":[{"db_id":"15bef4f690bc1f9d9deab62cf46941cd","evidence":{"patch_ids":["eee9eeea4b735f7e05d2171f399f90b7"],"same_day":true,"statement_hash":"61e49310bab6315f2a6361f60f0c6a990b1ae003c54c69d1fffe69de809cb046"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"在 contrib/pg_surgery 中，避免包含超过 64K 个元素的 TID 数组导致无限循环","url":"/docs/compare/?release=18.6#18.6-e307258545af5090","version":"18.6"},{"db_id":"4a05d2d19e5e7e6511185becc5206900","evidence":{"patch_ids":["eee9eeea4b735f7e05d2171f399f90b7"],"same_day":true,"statement_hash":"61e49310bab6315f2a6361f60f0c6a990b1ae003c54c69d1fffe69de809cb046"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"在 contrib/pg_surgery 中，避免包含超过 64K 个元素的 TID 数组导致无限循环","url":"/docs/compare/?release=17.11#17.11-79d5c27db04cf496","version":"17.11"},{"db_id":"a5a79735a400ca2b0ff1eb682f488482","evidence":{"patch_ids":["eee9eeea4b735f7e05d2171f399f90b7"],"same_day":true,"statement_hash":"61e49310bab6315f2a6361f60f0c6a990b1ae003c54c69d1fffe69de809cb046"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"在 contrib/pg_surgery 中，避免包含超过 64K 个元素的 TID 数组导致无限循环","url":"/docs/compare/?release=16.15#16.15-063e603810851d1d","version":"16.15"},{"db_id":"d01853553d7520acbac484e63be9b7ae","evidence":{"patch_ids":["eee9eeea4b735f7e05d2171f399f90b7"],"same_day":true,"statement_hash":"61e49310bab6315f2a6361f60f0c6a990b1ae003c54c69d1fffe69de809cb046"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"在 contrib/pg_surgery 中，避免包含超过 64K 个元素的 TID 数组导致无限循环","url":"/docs/compare/?release=15.19#15.19-d1dcefc82383e301","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["eee9eeea4b735f7e05d2171f399f90b7"],"same_day":true,"statement_hash":"61e49310bab6315f2a6361f60f0c6a990b1ae003c54c69d1fffe69de809cb046"},"rule":2,"target":"15bef4f690bc1f9d9deab62cf46941cd","type":"equivalent"},{"evidence":{"patch_ids":["eee9eeea4b735f7e05d2171f399f90b7"],"same_day":true,"statement_hash":"61e49310bab6315f2a6361f60f0c6a990b1ae003c54c69d1fffe69de809cb046"},"rule":2,"target":"4a05d2d19e5e7e6511185becc5206900","type":"equivalent"},{"evidence":{"patch_ids":["eee9eeea4b735f7e05d2171f399f90b7"],"same_day":true,"statement_hash":"61e49310bab6315f2a6361f60f0c6a990b1ae003c54c69d1fffe69de809cb046"},"rule":2,"target":"a5a79735a400ca2b0ff1eb682f488482","type":"equivalent"},{"evidence":{"patch_ids":["eee9eeea4b735f7e05d2171f399f90b7"],"same_day":true,"statement_hash":"61e49310bab6315f2a6361f60f0c6a990b1ae003c54c69d1fffe69de809cb046"},"rule":2,"target":"d01853553d7520acbac484e63be9b7ae","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["e9d53cf45"],"source_entry_id":"14.24/changes/077","source_hash":"7970c5c5ab3f3f0d5bfd4ee9868d7fed80588b5eca35e96865e62e14a796b481","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"61e49310bab6315f2a6361f60f0c6a990b1ae003c54c69d1fffe69de809cb046","text":"在 contrib/pg_surgery 中，避免包含超过 64K 个元素的 TID 数组导致无限循环（Andrey Rachitskiy）§","title":"在 contrib/pg_surgery 中，避免包含超过 64K 个元素的 TID 数组导致无限循环","variants":[],"version":"14.24"},{"also_in":[],"category":"security","category_label":"Security","commit_aliases":["1de0a711d","611756948","6b4de201e","77b2d18e9","eb93f10e2","ed0c4d5af"],"commit_groups":[["1de0a711d","611756948","6b4de201e","77b2d18e9","eb93f10e2","ed0c4d5af"]],"commits":["1de0a711d"],"cves":["CVE-2026-6637"],"db_id":"98b367e0c42416fd78e2312f81ec66e2","html":"\u003cp\u003e\n      避免 \u003ccode\u003econtrib/refint\u003c/code\u003e 的\n      \u003ccode\u003echeck_foreign_key()\u003c/code\u003e 中解引用 NULL 指针（Ayush Tiwari）\u003ca href=\"https://postgr.es/c/1de0a711d\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      在更新时级联的情况下，被引用列的 null 值会导致崩溃。这是\n      CVE-2026-6637 修复中的一项疏漏，但修复之前的代码也并不真正正确。\n     \u003c/p\u003e","id":"14.24-1db62b2c5a9b5839","identity_text":"Avoid NULL-pointer dereference in contrib/refint's check_foreign_key() (Ayush Tiwari) In the on-update-cascade case, a null value of a referenced column led to a crash. This is an oversight in the fix for CVE-2026-6637, but the code that was there before that wasn't really right either.","part":"changes","patch_ids":["47510ee01f1ec9c76e280af528461da2"],"related_changes":[{"db_id":"1404c503877f8a1f5c524fd84656cf87","evidence":{"patch_ids":["47510ee01f1ec9c76e280af528461da2"],"same_day":true,"statement_hash":"95ffa03f4949f1fbe65efb454898eb0f8b9358951a8110fcc4b0547102b37374"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"避免 contrib/refint 的 check_foreign_key() 中解引用 NULL 指针","url":"/docs/compare/?release=18.6#18.6-8573bd52d03d8b3e","version":"18.6"},{"db_id":"4a53f44037d5d1ea5b714eb8d91567ee","evidence":{"patch_ids":["47510ee01f1ec9c76e280af528461da2"],"same_day":true,"statement_hash":"95ffa03f4949f1fbe65efb454898eb0f8b9358951a8110fcc4b0547102b37374"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"避免 contrib/refint 的 check_foreign_key() 中解引用 NULL 指针","url":"/docs/compare/?release=17.11#17.11-3c3f973709d9fe9a","version":"17.11"},{"db_id":"a4fcc13dcc4b7cf6a5470b40915f7de5","evidence":{"patch_ids":["47510ee01f1ec9c76e280af528461da2"],"same_day":true,"statement_hash":"95ffa03f4949f1fbe65efb454898eb0f8b9358951a8110fcc4b0547102b37374"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"避免 contrib/refint 的 check_foreign_key() 中解引用 NULL 指针","url":"/docs/compare/?release=16.15#16.15-744702bd470fa361","version":"16.15"},{"db_id":"220e195253d94eac399969a628bda519","evidence":{"patch_ids":["47510ee01f1ec9c76e280af528461da2"],"same_day":true,"statement_hash":"95ffa03f4949f1fbe65efb454898eb0f8b9358951a8110fcc4b0547102b37374"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"避免 contrib/refint 的 check_foreign_key() 中解引用 NULL 指针","url":"/docs/compare/?release=15.19#15.19-e808c12e0db01138","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["47510ee01f1ec9c76e280af528461da2"],"same_day":true,"statement_hash":"95ffa03f4949f1fbe65efb454898eb0f8b9358951a8110fcc4b0547102b37374"},"rule":2,"target":"1404c503877f8a1f5c524fd84656cf87","type":"equivalent"},{"evidence":{"patch_ids":["47510ee01f1ec9c76e280af528461da2"],"same_day":true,"statement_hash":"95ffa03f4949f1fbe65efb454898eb0f8b9358951a8110fcc4b0547102b37374"},"rule":2,"target":"220e195253d94eac399969a628bda519","type":"equivalent"},{"evidence":{"patch_ids":["47510ee01f1ec9c76e280af528461da2"],"same_day":true,"statement_hash":"95ffa03f4949f1fbe65efb454898eb0f8b9358951a8110fcc4b0547102b37374"},"rule":2,"target":"4a53f44037d5d1ea5b714eb8d91567ee","type":"equivalent"},{"evidence":{"patch_ids":["47510ee01f1ec9c76e280af528461da2"],"same_day":true,"statement_hash":"95ffa03f4949f1fbe65efb454898eb0f8b9358951a8110fcc4b0547102b37374"},"rule":2,"target":"a4fcc13dcc4b7cf6a5470b40915f7de5","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["1de0a711d"],"source_entry_id":"14.24/changes/078","source_hash":"4ebd8ebf667d86054bf38016696052ba2008c883cbe07e37cc732dde75c6ffb4","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"95ffa03f4949f1fbe65efb454898eb0f8b9358951a8110fcc4b0547102b37374","text":"避免 contrib/refint 的 check_foreign_key() 中解引用 NULL 指针（Ayush Tiwari）§ 在更新时级联的情况下，被引用列的 null 值会导致崩溃。这是 CVE-2026-6637 修复中的一项疏漏，但修复之前的代码也并不真正正确。","title":"避免 contrib/refint 的 check_foreign_key() 中解引用 NULL 指针","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["0004cab4d","0e1f1ed15","504ca0513","58b91fc73","b3aa2083a","bcbbd070d"],"commit_groups":[["0004cab4d","0e1f1ed15","504ca0513","58b91fc73","b3aa2083a","bcbbd070d"]],"commits":["58b91fc73"],"cves":[],"db_id":"4479ff440be61a73b062dfc1c959faf7","html":"\u003cp\u003e\n      修复 \u003ccode\u003econtrib/seg\u003c/code\u003e，使其正确打印带有\n      \u003ccode\u003e~\u003c/code\u003e 确定性指示符的线段（Ewan Young）\u003ca href=\"https://postgr.es/c/58b91fc73\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      由于拼写错误，\u003ccode\u003eseg_out()\u003c/code\u003e 不会打印附加在线段上界的\n      \u003ccode\u003e~\u003c/code\u003e 确定性指示符。更糟的是，如果下界带有\n      \u003ccode\u003e~\u003c/code\u003e 而上界没有指示符，上界会完全不被打印，从而错误地将该值转换为开区间。\n     \u003c/p\u003e","id":"14.24-2bb527b600ae3151","identity_text":"Fix contrib/seg to print segments with ~ certainty indicators correctly (Ewan Young) Due to a typo, seg_out() did not print a ~ certainty indicator attached to a segment's upper boundary. Worse, if the lower boundary had ~ while the upper boundary had no indicator, the upper boundary was not printed at all, incorrectly converting the value into an open interval.","part":"changes","patch_ids":["e2313cef86571289890e86a92fd291b0"],"related_changes":[{"db_id":"de74a54f9ab1b5032316a8f4cb4edf58","evidence":{"patch_ids":["e2313cef86571289890e86a92fd291b0"],"same_day":true,"statement_hash":"23b42c58c9ee43c9366b0c8bcd51fa7f6a5f8128a44a1177cc58f3f91513f308"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 contrib/seg，使其正确打印带有 ~ 确定性指示符的线段","url":"/docs/compare/?release=18.6#18.6-387ff665922d6204","version":"18.6"},{"db_id":"f63e408806c4f80aa07b2f3f4200fd07","evidence":{"patch_ids":["e2313cef86571289890e86a92fd291b0"],"same_day":true,"statement_hash":"23b42c58c9ee43c9366b0c8bcd51fa7f6a5f8128a44a1177cc58f3f91513f308"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 contrib/seg，使其正确打印带有 ~ 确定性指示符的线段","url":"/docs/compare/?release=17.11#17.11-f8ebcb7cb6568363","version":"17.11"},{"db_id":"f181fe24877ee46b04e858490e6a289b","evidence":{"patch_ids":["e2313cef86571289890e86a92fd291b0"],"same_day":true,"statement_hash":"23b42c58c9ee43c9366b0c8bcd51fa7f6a5f8128a44a1177cc58f3f91513f308"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 contrib/seg，使其正确打印带有 ~ 确定性指示符的线段","url":"/docs/compare/?release=16.15#16.15-2bba48da7c744466","version":"16.15"},{"db_id":"0092f0106b4cbebadc3657eda9991c9e","evidence":{"patch_ids":["e2313cef86571289890e86a92fd291b0"],"same_day":true,"statement_hash":"23b42c58c9ee43c9366b0c8bcd51fa7f6a5f8128a44a1177cc58f3f91513f308"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 contrib/seg，使其正确打印带有 ~ 确定性指示符的线段","url":"/docs/compare/?release=15.19#15.19-51153c85eeb90c1b","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["e2313cef86571289890e86a92fd291b0"],"same_day":true,"statement_hash":"23b42c58c9ee43c9366b0c8bcd51fa7f6a5f8128a44a1177cc58f3f91513f308"},"rule":2,"target":"0092f0106b4cbebadc3657eda9991c9e","type":"equivalent"},{"evidence":{"patch_ids":["e2313cef86571289890e86a92fd291b0"],"same_day":true,"statement_hash":"23b42c58c9ee43c9366b0c8bcd51fa7f6a5f8128a44a1177cc58f3f91513f308"},"rule":2,"target":"de74a54f9ab1b5032316a8f4cb4edf58","type":"equivalent"},{"evidence":{"patch_ids":["e2313cef86571289890e86a92fd291b0"],"same_day":true,"statement_hash":"23b42c58c9ee43c9366b0c8bcd51fa7f6a5f8128a44a1177cc58f3f91513f308"},"rule":2,"target":"f181fe24877ee46b04e858490e6a289b","type":"equivalent"},{"evidence":{"patch_ids":["e2313cef86571289890e86a92fd291b0"],"same_day":true,"statement_hash":"23b42c58c9ee43c9366b0c8bcd51fa7f6a5f8128a44a1177cc58f3f91513f308"},"rule":2,"target":"f63e408806c4f80aa07b2f3f4200fd07","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["58b91fc73"],"source_entry_id":"14.24/changes/079","source_hash":"4dfe52d94c73c5e24c0c1fcaade30b6e4a155209248c6303e073d179edbdf7af","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"23b42c58c9ee43c9366b0c8bcd51fa7f6a5f8128a44a1177cc58f3f91513f308","text":"修复 contrib/seg，使其正确打印带有 ~ 确定性指示符的线段（Ewan Young）§ 由于拼写错误，seg_out() 不会打印附加在线段上界的 ~ 确定性指示符。更糟的是，如果下界带有 ~ 而上界没有指示符，上界会完全不被打印，从而错误地将该值转换为开区间。","title":"修复 contrib/seg，使其正确打印带有 ~ 确定性指示符的线段","variants":[],"version":"14.24"},{"also_in":[],"category":"bugfix","category_label":"Bug fixes","commit_aliases":["18955d412","4a49ab289","91b57eade","9d33a5a80","bc5775149","f3f901a53"],"commit_groups":[["18955d412","4a49ab289","91b57eade","9d33a5a80","bc5775149","f3f901a53"]],"commits":["f3f901a53"],"cves":[],"db_id":"2953470186ae43261dceb65dc846a8ae","html":"\u003cp\u003e\n      修复 \u003ccode\u003econtrib/xml2\u003c/code\u003e 的\n      \u003ccode\u003expath_nodeset()\u003c/code\u003e 函数处理命名空间节点时的崩溃（Andrey Chernyy、Michael Paquier）\u003ca href=\"https://postgr.es/c/f3f901a53\"\u003e§\u003c/a\u003e\n\u003c/p\u003e","id":"14.24-9a9c27171741ded6","identity_text":"Fix crash with namespace nodes in contrib/xml2's xpath_nodeset() function (Andrey Chernyy, Michael Paquier)","part":"changes","patch_ids":["8c64b7d500b48c68b6c001ce703e5a7a"],"related_changes":[{"db_id":"fd09f75c1b17c508bb1667d2e8243417","evidence":{"patch_ids":["8c64b7d500b48c68b6c001ce703e5a7a"],"same_day":true,"statement_hash":"564064da4d754c14b74429277ee8c70cec905cb6c0898171524ca51bb511cd9e"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"修复 contrib/xml2 的 xpath_nodeset() 函数处理命名空间节点时的崩溃","url":"/docs/compare/?release=18.6#18.6-de0be6584b43dd98","version":"18.6"},{"db_id":"d967526895b7f276004e82823a346cb6","evidence":{"patch_ids":["8c64b7d500b48c68b6c001ce703e5a7a"],"same_day":true,"statement_hash":"564064da4d754c14b74429277ee8c70cec905cb6c0898171524ca51bb511cd9e"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"修复 contrib/xml2 的 xpath_nodeset() 函数处理命名空间节点时的崩溃","url":"/docs/compare/?release=17.11#17.11-104bc8853d14d256","version":"17.11"},{"db_id":"edc2de68fd585e179939afe22f49f6bb","evidence":{"patch_ids":["8c64b7d500b48c68b6c001ce703e5a7a"],"same_day":true,"statement_hash":"564064da4d754c14b74429277ee8c70cec905cb6c0898171524ca51bb511cd9e"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"修复 contrib/xml2 的 xpath_nodeset() 函数处理命名空间节点时的崩溃","url":"/docs/compare/?release=16.15#16.15-25a6edd728e03146","version":"16.15"},{"db_id":"32f92901accbc8994883d1e03fd0af26","evidence":{"patch_ids":["8c64b7d500b48c68b6c001ce703e5a7a"],"same_day":true,"statement_hash":"564064da4d754c14b74429277ee8c70cec905cb6c0898171524ca51bb511cd9e"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"修复 contrib/xml2 的 xpath_nodeset() 函数处理命名空间节点时的崩溃","url":"/docs/compare/?release=15.19#15.19-459f9a551ce92569","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["8c64b7d500b48c68b6c001ce703e5a7a"],"same_day":true,"statement_hash":"564064da4d754c14b74429277ee8c70cec905cb6c0898171524ca51bb511cd9e"},"rule":2,"target":"32f92901accbc8994883d1e03fd0af26","type":"equivalent"},{"evidence":{"patch_ids":["8c64b7d500b48c68b6c001ce703e5a7a"],"same_day":true,"statement_hash":"564064da4d754c14b74429277ee8c70cec905cb6c0898171524ca51bb511cd9e"},"rule":2,"target":"d967526895b7f276004e82823a346cb6","type":"equivalent"},{"evidence":{"patch_ids":["8c64b7d500b48c68b6c001ce703e5a7a"],"same_day":true,"statement_hash":"564064da4d754c14b74429277ee8c70cec905cb6c0898171524ca51bb511cd9e"},"rule":2,"target":"edc2de68fd585e179939afe22f49f6bb","type":"equivalent"},{"evidence":{"patch_ids":["8c64b7d500b48c68b6c001ce703e5a7a"],"same_day":true,"statement_hash":"564064da4d754c14b74429277ee8c70cec905cb6c0898171524ca51bb511cd9e"},"rule":2,"target":"fd09f75c1b17c508bb1667d2e8243417","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["f3f901a53"],"source_entry_id":"14.24/changes/080","source_hash":"49b02ae64f0ec1a735e3857f6fbbb0c06e4d1e859005aeda380d66ffe04dfad1","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"564064da4d754c14b74429277ee8c70cec905cb6c0898171524ca51bb511cd9e","text":"修复 contrib/xml2 的 xpath_nodeset() 函数处理命名空间节点时的崩溃（Andrey Chernyy、Michael Paquier）§","title":"修复 contrib/xml2 的 xpath_nodeset() 函数处理命名空间节点时的崩溃","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["bc5a873a8","eba7f1dc0","f1c579fc4"],"commit_groups":[["bc5a873a8","eba7f1dc0","f1c579fc4"]],"commits":["f1c579fc4"],"cves":[],"db_id":"daffe87e848e7599b381d9a4f90ea3c0","html":"\u003cp\u003e\n      支持使用 Visual Studio 2026 构建\n      \u003cspan\u003ePostgreSQL\u003c/span\u003e（Andrew Dunstan）\u003ca href=\"https://postgr.es/c/f1c579fc4\"\u003e§\u003c/a\u003e\n\u003c/p\u003e","id":"14.24-72a0fb4cd2ab3ca1","identity_text":"Support building PostgreSQL with Visual Studio 2026 (Andrew Dunstan)","part":"changes","patch_ids":["350b84561314ae3956b61523a936dc23"],"related_changes":[{"db_id":"5655e5022f22026045632bccc741d725","evidence":{"patch_ids":["350b84561314ae3956b61523a936dc23"],"same_day":true,"statement_hash":"a91781743ce2b194ac51f5c136b372071abdd36a850a23eda451bbb6bf8387e7"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"支持使用 Visual Studio 2026 构建 PostgreSQL","url":"/docs/compare/?release=16.15#16.15-95012abd1b53caeb","version":"16.15"},{"db_id":"41e5c60ae40172d0cfdddcb33d14fb8a","evidence":{"patch_ids":["350b84561314ae3956b61523a936dc23"],"same_day":true,"statement_hash":"a91781743ce2b194ac51f5c136b372071abdd36a850a23eda451bbb6bf8387e7"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"支持使用 Visual Studio 2026 构建 PostgreSQL","url":"/docs/compare/?release=15.19#15.19-5afbf0440f9a6852","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["350b84561314ae3956b61523a936dc23"],"same_day":true,"statement_hash":"a91781743ce2b194ac51f5c136b372071abdd36a850a23eda451bbb6bf8387e7"},"rule":2,"target":"41e5c60ae40172d0cfdddcb33d14fb8a","type":"equivalent"},{"evidence":{"patch_ids":["350b84561314ae3956b61523a936dc23"],"same_day":true,"statement_hash":"a91781743ce2b194ac51f5c136b372071abdd36a850a23eda451bbb6bf8387e7"},"rule":2,"target":"5655e5022f22026045632bccc741d725","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["f1c579fc4"],"source_entry_id":"14.24/changes/081","source_hash":"cc142e96d7ed0e8044e0b1cfe85fb1380b5741087f8ab35ed2f225f0a143b60f","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"a91781743ce2b194ac51f5c136b372071abdd36a850a23eda451bbb6bf8387e7","text":"支持使用 Visual Studio 2026 构建 PostgreSQL（Andrew Dunstan）§","title":"支持使用 Visual Studio 2026 构建 PostgreSQL","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["086652c02","27cf3b5af","89d243d52","8bcabfcce","c7f70fa1b","fb8befa7b"],"commit_groups":[["086652c02","27cf3b5af","89d243d52","8bcabfcce","c7f70fa1b","fb8befa7b"]],"commits":["086652c02"],"cves":[],"db_id":"10ee20e58ffd04daecf6e5f030162c87","html":"\u003cp\u003e\n      支持使用 OpenSSL 4 构建 \u003cspan\u003ePostgreSQL\u003c/span\u003e（Daniel Gustafsson）\u003ca href=\"https://postgr.es/c/086652c02\"\u003e§\u003c/a\u003e\n\u003c/p\u003e","id":"14.24-192a685e063a0595","identity_text":"Support building PostgreSQL with OpenSSL 4 (Daniel Gustafsson)","part":"changes","patch_ids":["17c49f696c0a31900846c5a8c98eebd4"],"related_changes":[{"db_id":"c3287f3d7329f9fd4fb1dead8c819569","evidence":{"patch_ids":["17c49f696c0a31900846c5a8c98eebd4"],"same_day":true,"statement_hash":"c7b934d532c3b5d79d29d9130c3ab4f97028c3c1aa16422bb9101d84ad828729"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"支持使用 OpenSSL 4 构建 PostgreSQL","url":"/docs/compare/?release=18.6#18.6-48c6d3c86320b73f","version":"18.6"},{"db_id":"3814ca74f63c29149528542a43ad21c5","evidence":{"patch_ids":["17c49f696c0a31900846c5a8c98eebd4"],"same_day":true,"statement_hash":"c7b934d532c3b5d79d29d9130c3ab4f97028c3c1aa16422bb9101d84ad828729"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"支持使用 OpenSSL 4 构建 PostgreSQL","url":"/docs/compare/?release=17.11#17.11-f6b857a06e35de57","version":"17.11"},{"db_id":"5205dd7058f572a69fe179e448446706","evidence":{"patch_ids":["17c49f696c0a31900846c5a8c98eebd4"],"same_day":true,"statement_hash":"c7b934d532c3b5d79d29d9130c3ab4f97028c3c1aa16422bb9101d84ad828729"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"支持使用 OpenSSL 4 构建 PostgreSQL","url":"/docs/compare/?release=16.15#16.15-1b5271a8f18e77e3","version":"16.15"},{"db_id":"5a9bafbcf49a80b12f21e542e3bae026","evidence":{"patch_ids":["17c49f696c0a31900846c5a8c98eebd4"],"same_day":true,"statement_hash":"c7b934d532c3b5d79d29d9130c3ab4f97028c3c1aa16422bb9101d84ad828729"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"支持使用 OpenSSL 4 构建 PostgreSQL","url":"/docs/compare/?release=15.19#15.19-50448fe82729f9d3","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["17c49f696c0a31900846c5a8c98eebd4"],"same_day":true,"statement_hash":"c7b934d532c3b5d79d29d9130c3ab4f97028c3c1aa16422bb9101d84ad828729"},"rule":2,"target":"3814ca74f63c29149528542a43ad21c5","type":"equivalent"},{"evidence":{"patch_ids":["17c49f696c0a31900846c5a8c98eebd4"],"same_day":true,"statement_hash":"c7b934d532c3b5d79d29d9130c3ab4f97028c3c1aa16422bb9101d84ad828729"},"rule":2,"target":"5205dd7058f572a69fe179e448446706","type":"equivalent"},{"evidence":{"patch_ids":["17c49f696c0a31900846c5a8c98eebd4"],"same_day":true,"statement_hash":"c7b934d532c3b5d79d29d9130c3ab4f97028c3c1aa16422bb9101d84ad828729"},"rule":2,"target":"5a9bafbcf49a80b12f21e542e3bae026","type":"equivalent"},{"evidence":{"patch_ids":["17c49f696c0a31900846c5a8c98eebd4"],"same_day":true,"statement_hash":"c7b934d532c3b5d79d29d9130c3ab4f97028c3c1aa16422bb9101d84ad828729"},"rule":2,"target":"c3287f3d7329f9fd4fb1dead8c819569","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["086652c02"],"source_entry_id":"14.24/changes/082","source_hash":"f7bfb955aa836fe7ecb3cf572f07351c72e98ab01fc53f5ef55efb7c9f65a008","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"c7b934d532c3b5d79d29d9130c3ab4f97028c3c1aa16422bb9101d84ad828729","text":"支持使用 OpenSSL 4 构建 PostgreSQL（Daniel Gustafsson）§","title":"支持使用 OpenSSL 4 构建 PostgreSQL","variants":[],"version":"14.24"},{"also_in":[],"category":"improvement","category_label":"Improvements","commit_aliases":["3c16aa293","5f67124fa","669438aed","6ca405938","796c275a0","812cc1a73","af7be5672"],"commit_groups":[["3c16aa293","5f67124fa","669438aed","6ca405938","796c275a0","812cc1a73","af7be5672"]],"commits":["812cc1a73"],"cves":[],"db_id":"afb53916a223205ed20435542f0bacc1","html":"\u003cp\u003e\n      将时区数据文件更新到 \u003cspan\u003etzdata\u003c/span\u003e 2026c 发布版本（Tom Lane）\u003ca href=\"https://postgr.es/c/812cc1a73\"\u003e§\u003c/a\u003e\n\u003c/p\u003e\u003cp\u003e\n      Alberta（America/Edmonton）将从 2026 年 11 月开始全年采用 UTC-06（实际上就是永久 DST）。本次发布假定其 TZ 缩写从那时起为\n      \u003ccode\u003eCST\u003c/code\u003e。这看起来可能会改变，但尚不清楚会使用什么新缩写。\n     \u003c/p\u003e\u003cp\u003e\n      Morocco（Africa/Casablanca）将从 2026-09-20 起改为永久 UTC+00，不再进行夏令时转换。\n     \u003c/p\u003e","id":"14.24-14e27d4d0379635b","identity_text":"Update time zone data files to tzdata release 2026c (Tom Lane) Alberta (America/Edmonton) will be on year-round UTC-06 (effectively, permanent DST) beginning in November 2026. This release assumes that their TZ abbreviation will be CST from that time forward. That seems likely to change, but it's unclear what new abbreviation will be used. Morocco (Africa/Casablanca) will move to permanent UTC+00, without daylight saving time transitions, on 2026-09-20.","part":"changes","patch_ids":["b4e9971495e6df3bcbb5661de594cfb5"],"related_changes":[{"db_id":"5d6e219dd117842cc9b25b660af47952","evidence":{"patch_ids":["b4e9971495e6df3bcbb5661de594cfb5"],"same_day":true,"statement_hash":"db30f9e9494e81ad745b38acebea395f96ce2c6e6fd0e722f568326a3b8491a7"},"kind":"equivalent","label":"18.6","source_url":"/docs/release/18.6/#RELEASE-18-6-CHANGES","title":"将时区数据文件更新到 tzdata 2026c 发布版本","url":"/docs/compare/?release=18.6#18.6-d9abf44820fbecc5","version":"18.6"},{"db_id":"6c00ccb389c691ec829366a2dd6d8fd7","evidence":{"patch_ids":["b4e9971495e6df3bcbb5661de594cfb5"],"same_day":true,"statement_hash":"db30f9e9494e81ad745b38acebea395f96ce2c6e6fd0e722f568326a3b8491a7"},"kind":"equivalent","label":"17.11","source_url":"/docs/release/17.11/#RELEASE-17-11-CHANGES","title":"将时区数据文件更新到 tzdata 2026c 发布版本","url":"/docs/compare/?release=17.11#17.11-8abc326e9afc0d23","version":"17.11"},{"db_id":"ae8d1b295c148a9982765709cf1583a9","evidence":{"patch_ids":["b4e9971495e6df3bcbb5661de594cfb5"],"same_day":true,"statement_hash":"db30f9e9494e81ad745b38acebea395f96ce2c6e6fd0e722f568326a3b8491a7"},"kind":"equivalent","label":"16.15","source_url":"/docs/release/16.15/#RELEASE-16-15-CHANGES","title":"将时区数据文件更新到 tzdata 2026c 发布版本","url":"/docs/compare/?release=16.15#16.15-d220a135cd5ed833","version":"16.15"},{"db_id":"163da88262eec7e167bed3e56a48dcc3","evidence":{"patch_ids":["b4e9971495e6df3bcbb5661de594cfb5"],"same_day":true,"statement_hash":"db30f9e9494e81ad745b38acebea395f96ce2c6e6fd0e722f568326a3b8491a7"},"kind":"equivalent","label":"15.19","source_url":"/docs/release/15.19/#RELEASE-15-19-CHANGES","title":"将时区数据文件更新到 tzdata 2026c 发布版本","url":"/docs/compare/?release=15.19#15.19-661a397eafb52141","version":"15.19"}],"relations":[{"evidence":{"patch_ids":["b4e9971495e6df3bcbb5661de594cfb5"],"same_day":true,"statement_hash":"db30f9e9494e81ad745b38acebea395f96ce2c6e6fd0e722f568326a3b8491a7"},"rule":2,"target":"163da88262eec7e167bed3e56a48dcc3","type":"equivalent"},{"evidence":{"patch_ids":["b4e9971495e6df3bcbb5661de594cfb5"],"same_day":true,"statement_hash":"db30f9e9494e81ad745b38acebea395f96ce2c6e6fd0e722f568326a3b8491a7"},"rule":2,"target":"5d6e219dd117842cc9b25b660af47952","type":"equivalent"},{"evidence":{"patch_ids":["b4e9971495e6df3bcbb5661de594cfb5"],"same_day":true,"statement_hash":"db30f9e9494e81ad745b38acebea395f96ce2c6e6fd0e722f568326a3b8491a7"},"rule":2,"target":"6c00ccb389c691ec829366a2dd6d8fd7","type":"equivalent"},{"evidence":{"patch_ids":["b4e9971495e6df3bcbb5661de594cfb5"],"same_day":true,"statement_hash":"db30f9e9494e81ad745b38acebea395f96ce2c6e6fd0e722f568326a3b8491a7"},"rule":2,"target":"ae8d1b295c148a9982765709cf1583a9","type":"equivalent"}],"section":"变更","section_path":["变更"],"source_commits":["812cc1a73"],"source_entry_id":"14.24/changes/083","source_hash":"2695b54b84ee1c6e9d085714b55677b0974e61d05813a2f3e2b90c4cf403a03a","source_url":"/docs/release/14.24/#RELEASE-14-24-CHANGES","statement_hash":"db30f9e9494e81ad745b38acebea395f96ce2c6e6fd0e722f568326a3b8491a7","text":"将时区数据文件更新到 tzdata 2026c 发布版本（Tom Lane）§ Alberta（America/Edmonton）将从 2026 年 11 月开始全年采用 UTC-06（实际上就是永久 DST）。本次发布假定其 TZ 缩写从那时起为 CST。这看起来可能会改变，但尚不清楚会使用什么新缩写。 Morocco（Africa/Casablanca）将从 2026-09-20 起改为永久 UTC+00，不再进行夏令时转换。","title":"将时区数据文件更新到 tzdata 2026c 发布版本","variants":[],"version":"14.24"}],"entry_count":83,"eol":"2026-11-12","eol_date":"2026-11-12","label":"14.24","major":"14","manual":"14","manual_build":"14.24","manual_url":"/docs/14/release-14-24.html","migration_html":"\u003cp\u003e\n    对于运行 14.X 的用户，不需要执行导出/恢复。\n   \u003c/p\u003e\u003cp\u003e\n    但是，下面前三个安全条目描述了更新后可能需要进行的配置调整和数据清理。\n   \u003c/p\u003e\u003cp\u003e\n    此外，如果使用 \u003ccode\u003econtrib/btree_gist\u003c/code\u003e\n    或 \u003ccode\u003econtrib/ltree\u003c/code\u003e，可能需要为这些扩展创建的索引重建索引；请参见下面的相关条目。\n   \u003c/p\u003e\u003cp\u003e\n    此外，如果是从早于 14.19 的版本升级，请参见\u003ca href=\"/docs/14/release-14-19.html\" title=\"E.6. 发布版本 14.19\"\u003e第 E.6 节\u003c/a\u003e。\n   \u003c/p\u003e","minor":24,"placeholder":false,"source_as_of":"","source_url":"/docs/release/14.24/","status":"stable","status_label":"Supported","support_days":33,"supported":true,"version":"14.24"}],"mode":"release","release_count":1,"remaining_cves":[],"security_as_of":"2026-09-26","security_regressions":[],"source_as_of":"2026-09-26","stats":[{"count":83,"key":"all","label":"All changes"},{"count":0,"key":"feature","label":"Features"},{"count":31,"key":"bugfix","label":"Bug fixes"},{"count":29,"key":"security","label":"Security"},{"count":0,"key":"performance","label":"Performance"},{"count":0,"key":"compatibility","label":"Compatibility"},{"count":23,"key":"improvement","label":"Improvements"}],"to_release":{"age_days":58,"build":"14.24","changes_count":83,"compatibility_count":0,"content_hash":"3e0c3065a78d238ba87138a7c8651175d21159d1bb6afa8480f4c99937d16842","date":"2026-08-13","date_text":"2026-08-13","doc_git":"","doc_loaded_at":"2026-09-26T02:56:39.341991","entry_count":83,"eol":"2026-11-12","eol_date":"2026-11-12","label":"14.24","major":"14","manual":"14","manual_build":"14.24","manual_url":"/docs/14/release-14-24.html","migration_html":"\u003cp\u003e\n    对于运行 14.X 的用户，不需要执行导出/恢复。\n   \u003c/p\u003e\u003cp\u003e\n    但是，下面前三个安全条目描述了更新后可能需要进行的配置调整和数据清理。\n   \u003c/p\u003e\u003cp\u003e\n    此外，如果使用 \u003ccode\u003econtrib/btree_gist\u003c/code\u003e\n    或 \u003ccode\u003econtrib/ltree\u003c/code\u003e，可能需要为这些扩展创建的索引重建索引；请参见下面的相关条目。\n   \u003c/p\u003e\u003cp\u003e\n    此外，如果是从早于 14.19 的版本升级，请参见\u003ca href=\"/docs/14/release-14-19.html\" title=\"E.6. 发布版本 14.19\"\u003e第 E.6 节\u003c/a\u003e。\n   \u003c/p\u003e","minor":24,"placeholder":false,"source_as_of":"","source_url":"/docs/release/14.24/","status":"stable","status_label":"Supported","support_days":33,"supported":true,"version":"14.24"},"total":83,"warnings":[]}
