发布于 2026-09-15T00:08:49.609986Z · Ewan Young · PostgreSQL

PostgreSQL 的并行 GIN 索引构建会把键值暂存为排序元组,其中键长原先只用 16 位字段保存。遇到超过 65535 字节的键时,长度被截断,后续代码会把键内容误当作倒排列表,可能触发断言、越界读取,甚至向索引写入错误数据。新提交把键长改为 Size,并显式保证数据对齐,兼顾 32 位平台。问题仅涉及并行构建使用的临时格式,同一数据的串行构建不走这条路径;修复已合入 master 和 19 分支。
PostgreSQL 的并行 GIN 索引构建会把键值暂存为排序元组,其中键长原先只用 16 位字段保存。遇到超过 65535 字节的键时,长度被截断,后续代码会把键内容误当作倒排列表,可能触发断言、越界读取,甚至向索引写入错误数据。新提交把键长改为 Size,并显式保证数据对齐,兼顾 32 位平台。问题仅涉及并行构建使用的临时格式,同一数据的串行构建不走这条路径;修复已合入 master 和 19 分支。
来源记录
- pgweb.info_item · 8544a92f2828ccdb · 2026-10-03T04:08:55.967155Z