PostgreSQL 9.5 开放项目
来自 PostgreSQL Wiki
跳转到导航跳转到搜索开放问题
(截至 2015 年 12 月 27 日,没有问题)
已解决问题
9.5RC1 之后解决
brin_summarize_new_values 没有检查它是否被调用在 brin 索引上,也没有检查权限。
9.5beta2 之后解决
- 修复多事务截断重写中的问题
- 错误已修复
- 注释修复仍然存在
- UPSERT 语句的 UPDATE 子句中,UPDATE 触发器调用不正确。Peter 已发布了一个修复程序.
- vacuumdb -j 和密码处理
- UPSERT 的文档调整 - 所有问题的补丁已发布
- psql 扩展的包装格式 在行包装中出现了一个错误
- 外部连接下推与 EvalPlanQual
- track_commit_timestamp 出现另一种奇怪的行为
- btree 和 spgist 索引的非日志关系的关联文件在提升后未初始化(不是 9.5 的问题)
- ALTER TABLE SET TABLESPACE 忽略非日志关系(不是 9.5 的问题)
- 在角色删除过程中提及策略 *或* 在 DROP OWNED 中更改/删除它们
- 在 DROP OWNED 中更改/删除它们已提交
- 当源和目标在同一时间线上时,pg_rewind 以错误代码 1 退出
- 有争议的 RLS 安全漏洞,EvalPlanQual() 疑虑
- 由于锁定方式与更新和快照以及 RLS 相结合,在没有其他独立锁定的情况下,在正确的时间,可以锁定一行,然后看到该行的更新结果,而对该行的访问已被删除。Peter 与 Heikki 和 Andres 讨论过这个问题,他们达成一致,认为这不是一个严重问题,但应该添加文档来解释它。
- Stephen 提出了初步措辞来解决这个问题,并将提供一个文档补丁。
- 修复已提交
- 更新 CREATE POLICY 参考页面
- 修复已提交
9.5beta1 之后解决
- 分区上的 UPSERT - 共识是将该问题视为一个限制并记录下来。
- 包含针对具有 RLS 策略的表的简单 UNION ALL 的查询可能会因 ERROR 而失败
- 在 plpgsql 中递归调用 jsonb_object_agg 时崩溃
- track_commit_timestamp 出现奇怪的行为
- 超大项计算需要更多测试(参见 brin_getinsertbuffer 中的 ereport(ERROR) 调用)
- 记录 `inclusion` 框架
9.5alpha2 之后解决
- EXCLUDED.* 目标列表的各种问题
- 关于已删除列问题的报告.
- pg_receivexlog --if-not-exists 会使用指针解除引用,由 Coverity 指出。
- LWLock 中的死锁
- LWLockWaitForVar 与原子锁定的引入之间的交互。
- BRIN 回归测试在 default_transaction_isolation = 'repeatable read' 时失败。(实际上问题是有效的索引损坏;有关详细信息,请参见 20150731194524)
- 9.5 发行说明可能需要 ON CONFLICT DO NOTHING 的兼容性通知,以供 FDW 作者使用 - 发行说明补丁已提交。
- 9.5 发行说明中关于 LEAKPROOF 语义更改的条目
- 仅在设置 PGFILEDESC 时将 $(WIN32RES) 链接到单文件模块。
- 协调 nodes/*funcs.c
- 一个全零页面可能会被添加到 FSM 并且没有被初始化
- brin_page_items() 在缓存刷新时不安全
- 使用 9.5 alpha 1 时,计划程序代码崩溃
- 报告提到,在使用 pg_hero 时,对 pg_stat_activity 进行查询会导致服务器崩溃。
- 一些测试和分析(使用扩展的查询协议、pghero 本身以及 Tom 对计划程序代码的分析)表明,提供的回溯和信息不足以提供可重现的测试用例。到目前为止,使用 pgbench 重现故障的尝试也失败了。
- 现在看来这是一个误报,是由本地代码更改以及可能的不一致构建引起的。
- commit_ts 及其解除引用的指针
- PL/Python 文档仍然描述了 9.5 之前的浮点数转换语义
- CancelBackup() 和 tablespace_map 文件
- 删除 row_security=force [Noah]
- 删除 SECURITY_ROW_LEVEL_DISABLED;使 ri_triggers.c 成为策略的主题 [Noah]
- 使 BYPASSRLS 更像表所有者绕过? [Noah]
- Dean 最新的 RLS 重构。
- Dean 于 7 月 30 日发布了一个重新基准的补丁.
- 需要在对扩展的限制性策略进行更改后进行进一步的重新基准。
- 不是行为更改,代码清理,需要确定是否应该为 9.5 完成,还是只在 master 中完成。
- PGXS "check" 目标强制安装
- 具有 oid 的表上的 ON CONFLICT ... UPDATE 不起作用
- [RLS] 在回归数据库中保留一个或多个策略,以便 pg_upgrade 测试套件执行 pg_dump 支持
- 无法在 Windows 上使用 PGSSLMODE=require 连接。
- track_commit_timestamp 在备用服务器中跟踪 COMMIT PREPARED,但在主服务器中不跟踪。
- 当在主服务器中翻转 track_commit_timestamp 时,备用服务器的行为很奇怪。
- CREATE POLICY 和 RETURNING
- 关于应该是什么行为进行了大量的讨论,但还没有补丁。
- 有人提出关于 UPDATE、DELETE 等 USING 子句如何独立于 SELECT USING 子句的问题;具体来说,SELECT USING 子句是否应该始终首先应用,然后 UPDATE 和 DELETE USING 子句与 SELECT USING 子句组合起来。当前的方法,即它们是独立的,意味着可以设置策略来允许“盲”UPDATE 或 DELETE,即使通过 SELECT USING 策略无法“看到”一行,也可以更新或删除该行。虽然共识并不十分压倒性,但普遍的观点似乎是,当前的方法很容易解释、推理和灵活,即使它确实允许这种“盲”更改。
- 还讨论了修改 UPDATE 策略,具体来说,是允许 WITH CHECK 策略引用行的“旧”和“新”版本。这看起来可能是未来有用的增强功能,但目前不会解决。
- 最后一次讨论在这里结束,指出了尝试根据 SELECT 策略限制返回的行没有意义,因为这些行已经通过语句转换,现在可能通过定义的任何 SELECT 策略。
- 下一步是添加更多文档或审查和评论现有方法以及/或者建议的方案。
- 正在编写更多文档来更好地解释 RETURNING、“盲”更新/删除等。
- 散列连接尝试分配过多的内存
- 在使用字符串值作为数组元素路径时,jsonb_set 出现错误
- 更多 RLS 疏忽
- 添加 DDL 控制的,每个表策略强制执行
9.5alpha1 之后解决
- 缺少对 object_classes 中的 TransformRelationId 和 OCLASS_TRANSFORM 的引用
- GIN 代码中的 PANIC(第二个问题,带元页面更新记录)
- bttext_abbrev_convert() 中的微不足道的错误
- 与 WAL 相关的工具和 .partial WAL 文件
- 与 WAL 相关的工具(即 pg_archivecleanup、pg_resetxlog 和 pg_xlogdump)似乎没有正确处理 .paritial WAL 文件。
- 撤销对写入超过指定数组长度的 strxfrm() 实现的支持。
- 完成 XLC 原子操作实现。
- 修复 AIX 构建 (0689cfc、bcd7c41、7193436)
- 最终的 jsonb 语义补丁,涉及在所有地方添加负下标
- 补丁还涉及添加额外的轻微输入清理
- plpgsql 因 CAST 导致崩溃。测试用例可用。
- RLS 无法与 UPDATE ... WHERE CURRENT OF 一起使用
- 补丁已提交.
- ON CONFLICT DO UPDATE 赋值表达式中包含间接引用的问题
- 在 ON CONFLICT 唯一索引推断中检查相关的索引元素
- XLOG 读取器设施在解码记录时出现内存泄漏,恢复中的节点在恢复许多记录后可能会因 OOM 而失败。
- 实际上并不那么关键,问题在于 XLogReaderFree,它应该控制更多要释放的块。
- 补丁已提交
- pg_rewind 的内存泄漏,补丁已提交
- copy.c 对 RLS 的处理不安全,补丁已提交
- pg_stats 会泄漏有关启用了 RLS 的关系的信息
- 更多 RLS 疏忽
- 第 1-4、6、7 项已修复/提交/推送。
- 对 CREATE FUNCTION 文档的建议改进/澄清
- Dean 最新的 RLS 重构。包括著名的错误修复。
- 具有附加非目标(FROM/USING)关系的 DML 查询关心 UPDATE/DELETE 适用的策略,而不是 SELECT 适用的策略。这显然是一个错误。
- Joe 提取了此整体补丁的这一部分,并在这里提交了它
- 具有附加非目标(FROM/USING)关系的 DML 查询关心 UPDATE/DELETE 适用的策略,而不是 SELECT 适用的策略。这显然是一个错误。
- TABLESAMPLE 功能需要大量工作
- TABLESAMPLE 实际上并没有满足 SQL 规范,是吗?
- NULL 搜索键会导致段错误
- spgist 恢复断言失败
- 恢复大多数 9.5 对 9.5 之前的 vcregress.pl 测试的更改。
- 当没有 backup_label 时,忽略 tablespace_map 文件。
- 正在讨论错误级别应该是 LOG 还是 WARNING。
- 当 pg_xlog 在 PGDATA 中定义为软链接时,pg_rewind 失败。
- Heikki 提出了一个解决方案:忽略 pg_xlog 上的内容。我们也可以考虑在以后添加一个新的选项,允许用户在执行 rewind 后设置 pg_rewind 的软链接。
- Michael 提出了另一个解决方案:使用 pg_readlink 的实现,并将内容从源端获取到目标端。这还需要修改 pg_stat_file,例如使用 lstat() 而不是 stat() 来检测路径是否是软链接(或 Windows 上的联接点)。也许这个解决方案不值得为了向后兼容性问题而付出代价,因为当遇到软链接/联接点时,stat() 会报告链接目标的信息。
- 已决定即使检测到 pg_xlog 是软链接,也要将其视为一个仓库。此更改已通过 0e42397 完成。
- SSL 重新协商代码的移除,可能与 9.5 关系不大,但我们希望在此得到一个好的结果,而不是等到 9.6 发布时再解决。此问题已通过 426746b 解决。
- FPW 压缩泄露信息 将 wal_compression 设置为 SUSET 并记录潜在的安全风险吗?
- 该参数已更改为 SUSET。
在 9.5alpha1 之前已解决。
- BRIN 页面类型标识符 BRIN 特殊空间需要重新整理。
- 建议:在数组函数中搜索 - array_position array_offset(s) 没有考虑不从 1 开始的数组。
- 流式传输逻辑变更时出现断言失败(在从逻辑解码槽点回放时,walsender 崩溃)。
- contrib 中没有测试程序 修复 src/test/modules 以在 MSVC 上运行。
- 改进 GB18030 <-> UTF8 编码转换。
- alter user/role CURRENT_USER CURRENT_USER 需要一些修复。
- transforms 与 CLOBBER_CACHE_ALWAYS。
- 关于:共享目录中的排序规则?
- CREATE EXTENSION pg_audit 可能会失败(pg_audit 已被回滚)。
- 会话启动时间歇性出现“缓存查找访问方法 403 失败”错误。
- 自定义连接无法构造子路径节点的计划节点 (提交)
- brin 回归测试出现间歇性错误。
- 这可能在 6 月 4 日之后就修复了,但在宣布问题解决之前,最好观察 chipmunk 一周或两周。
- 目前为止没有再出现错误。-rhaas,2015-06-26
- 为 9.5 降低成功动态后台工作进程的日志级别 (提交)
- 自 de768844 以来,XLogFileCopy 出现内存泄漏(带有 .partial 的 WAL 文件) (提交)
- 在归档恢复期间删除 pg_tblspc 中的符号链接,并对非符号链接路径报错 (提交)
- DDL 反解析不支持 CREATE/ALTER TRANSFORM。
- 支持 CREATE/DROP TRANSFORM 的 DDL 反解析补丁,发现了一个 DROP TRANSFORM 的 bug。
- Alvaro 提交了部分代码,截至 2015-06-22,他表示将继续处理剩余部分
- 第二次提交。
- GIN 代码出现 PANIC。
- max_wal_size 和重启点。
- pg_file_settings 补丁需要一些修改。
- 当前实现阻止了针对 9.4.1 回归的修复,该回归涉及对 PGC_POSTMASTER 变量的多个条目进行不必要的抱怨。
- pg_file_settings 视图在 Windows 上无法正常工作。
- 源服务器中文件删除导致 pg_rewind 失败。
- 与 xlogtemp 文件类似的问题,可以通过在 process_remote_files() 中忽略它们来解决。
- 窗口触发失败无法完全消除,但可以通过使用 pg_stat_file 和 if_not_exists 模式扫描源服务器中仍然存在的文件来大幅减少(只是一个想法)。通过将核心中的系统文件函数中的 missing_ok 逻辑泛化来解决。
- ANALYZE 和 TABLESAMPLE 中潜在的 log(0) 和除以 0 错误。
- 来自 Michael Paquier 的部分补丁已附加到主题中,但 Michael 表示它没有涵盖所有内容。
- Petr Jelinek 提供了正确的修复。
- 通过在发现 0.0 时使采样器重新调用 pg_erand48 来完成修复。想法来自 Tom。
较旧的错误。
- ALTER DATABASE ... SET TABLESPACE ... 期间的基备份不安全。
- 这不是 9.5 的回归,尽管这是一个 bug。
- recovery_target_action = pause & hot_standby = off
- 根据 Andres 的这篇文章,这里剩下的问题与 9.5 无关。
- pg_rewind 测试不稳定。
- 补丁已作为 582fbff 提交,这应该可以解决报告的症状。
- pg_ctl 超时 仍然是 pg_rewind 测试套件不稳定的潜在来源,但 pg_ctl 测试套件也受到影响,追溯到 9.4。
非错误。
- 所有用户都可以看到 pg_stat_ssl 的所有信息。
- 看起来这没什么问题,除非更多人参与进来并表示意见。
- 当目标路径包含不可写文件时,pg_rewind 失败。.
- Heikki 和 Robert 同意在这种情况发生时,pg_rewind 应该失败。因此,用户应该在执行 rewind 之前从 PGDATA 中删除这些文件。
- 用唯一索引对推测插入进行了一些重构 - 正式提出的想法,发布了补丁
- 感觉执行器与推测插入 + amcanunique AM 之间的约定应该明确,并记录在 "51.5. 索引唯一性检查" 中。
- 这应该修复,但 不是发布阻碍因素 以及随后的讨论。
- DDL 反解析测试模块应该检测到 transforms 不受支持,但它未能注意到这一点。
- 这是一个明显的测试缺陷,应该在未来进行修复,以防止以后出现遗漏错误。但没有理由为了它而推迟 9.5 的发布。