全局临时表补丁集发到 v9
Dean Rasheed 发布全局临时表补丁集的 v9,回应 Japin Li 和 Zsolt Parragi 的审查意见。这一版对 pg_class 里非临时关系改用 reloncommit = 'n' 而不是 NULL,避免空值处理的复杂;修好 pg_dump 丢掉 ON COMMIT 子句和已中止事务错误固定 datfrozenxid 两个问题,并给子事务清理函数补上提前返回。此外还新增了 pg_dump 测试用例。
pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
当天收录 31 条。
Dean Rasheed 发布全局临时表补丁集的 v9,回应 Japin Li 和 Zsolt Parragi 的审查意见。这一版对 pg_class 里非临时关系改用 reloncommit = 'n' 而不是 NULL,避免空值处理的复杂;修好 pg_dump 丢掉 ON COMMIT 子句和已中止事务错误固定 datfrozenxid 两个问题,并给子事务清理函数补上提前返回。此外还新增了 pg_dump 测试用例。
Matheus Alcantara 提交了把 Bloom filter 等运行时过滤器下推进规划器的 v5 PoC。候选过滤器不再限制为最优的三个,改按选择率阈值挑选;路径组合用广度优先逐步扩展,上限由新 GUC 控制,每种组合直接传给对应的真实路径构造函数而不是克隆已有路径。Tomas Vondra 调研 DuckDB、Spark 和 Trino 后发现它们都放在规划后处理阶段。自底向上规划估不准选择率仍是未解的核心问题。
Henson Choi 评审了行模式识别导航偏移量合并补丁的 v51。0001 修好 FIRST(expr, n>0) 丢失前向范围的回归,但他认为只做合并不够,会把原本 fail-closed 的错误变成静默的错误结果。评审列出 11 个缺陷,归为五个根因:偏移量在执行器初始化时冻结,感知不到 PARAM_EXEC 变化;volatile 检查跑在常量折叠之前;越界导航的语义不合标准。
PostgreSQL 17.7 的备库上出现 walsummarizer 反复记录 invalid record length ... got 0 且停滞不前的缺陷。Thom Brown 提交了分析和两个补丁:0001 把 read_upto 截断到时间线切换点,0002 把全零 WAL 当作 WAL 末尾而不是硬错误。Robert Haas 认为按 SummarizeWAL 的约定调用方本应已截断,0001 是多余的。全零文件的来源仍未查明。
Alena Rybakina 提交了 rebase 后的 vacuum 统计补丁系列 v40,每个提交对应一类统计。Bharath Rupireddy 审查后提出实质质疑:补丁新增的大部分统计项,包括堆和元组指标、WAL 用量、缓冲区用量、计时信息和可见性映射变更,在现有 vacuum 的输出里已经有了。他问能不能沿用 v28 里基于 hook 的外部模块方案,而不是在内核里新增视图,并建议先给出具体的自动调优用例。
Coverity 在 unicode_case.c 的 convert_case() 里报出潜在整数溢出:大小写转换让输出显著膨胀时 result_len 可能回绕。Tom Lane 指出即使输入长度在 size_t 范围内,输出长度也可能溢出,32 位平台尤其明显。Jeff Davis 引 Unicode 17.0 说明映射最多带来 3 倍码点扩展,叠加 UTF-8 单码点 4 字节,上限是 12 倍;但文本上限 1GB。
在 Aurora PostgreSQL 上重建大索引时,REINDEX 会把排序中间数据溢写到磁盘,临时空间不够就会失败。文章的做法是把重建放进蓝绿部署的 green 环境,配合 Aurora Optimized Reads,用带 NVMe 的实例让排序数据落到本地盘而不是走网络访问 EBS。实测一个膨胀到 8918 MB 的索引约四分钟重建到 4557 MB,期间写了约 19.5 GB 临时数据。
Rui Zhao 发现 launcher_exit() 有四处无锁读,v6 改用 launch_fast_checkpoint。
v2 顺带修了只读事务下 sequencesync worker 失败等几个问题。
vignesh C 把 NULL 权限值当作序列已不存在,走既有的缺失错误路径。
换掉废弃的 SSLv23_method 与 X509_NAME_get_text_by_NID,并修正协议检测宏。
游标配合 FETCH 1 可复现,标志在 ExecProcNode 再次执行之前就被重置。
Amit Kapila 计划改文档而不是改代码,修复提交到 HEAD 并回移至 PG14。
在 REST 接口之上做类型安全封装,替调用方处理资源就绪的轮询。
不留永久触发器或槽,按表名合并通知,不提供历史与恰好一次语义。
以协议层无状态取代 session id,要求新的请求头,官方称含破坏性变更。
Chrome 148 起该函数走宿主 std::tanh,不同 libm 的位级结果并不相同。