searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

hashjoin迭代器coredump

2024-09-04 09:41:43
3
0

现象:

执行select c.id from hrm_center_department a left join hrmresource b on a.department_id=b.departmentid left join uf_zxbm c on a.center_department_id=c.zxbm where b.id='641'发生coredump,稳定重现。

分析:

根据core文件可知,直接原因是FollowTailIterator::Read()内对m_stored_rows解引用时为空:

该成员本应由调用链MaterializeIterator::Init() -> MaterializeIterator::MaterializeRecursive() -> FollowTailIterator::set_stored_rows_pointer()设置,但测试发现并未调用MaterializeIterator::Init()MaterializeIterator::MaterializeRecursive()就在FollowTailIterator::Read()中解引用,说明执行计划存在问题。

FollowTailIterator::Init()中的注释也明确表明该现象不符合预期,无法通过debug版本的assert,确定为bug

解决方法:

该bug并未被发现,亦未被官方专门修复,但随着版本更新和与之相伴的代码重构,整套代码已于8.0.28被完全删除,该查询的实现方式全然不同,该bug亦随之消失。

若不能尽快升级,可添加/*+ NO_BNL */ hint绕过有问题的执行计划,或添加索引绕过hashjoin。

0条评论
作者已关闭评论
lcken
3文章数
0粉丝数
lcken
3 文章 | 0 粉丝
lcken
3文章数
0粉丝数
lcken
3 文章 | 0 粉丝
原创

hashjoin迭代器coredump

2024-09-04 09:41:43
3
0

现象:

执行select c.id from hrm_center_department a left join hrmresource b on a.department_id=b.departmentid left join uf_zxbm c on a.center_department_id=c.zxbm where b.id='641'发生coredump,稳定重现。

分析:

根据core文件可知,直接原因是FollowTailIterator::Read()内对m_stored_rows解引用时为空:

该成员本应由调用链MaterializeIterator::Init() -> MaterializeIterator::MaterializeRecursive() -> FollowTailIterator::set_stored_rows_pointer()设置,但测试发现并未调用MaterializeIterator::Init()MaterializeIterator::MaterializeRecursive()就在FollowTailIterator::Read()中解引用,说明执行计划存在问题。

FollowTailIterator::Init()中的注释也明确表明该现象不符合预期,无法通过debug版本的assert,确定为bug

解决方法:

该bug并未被发现,亦未被官方专门修复,但随着版本更新和与之相伴的代码重构,整套代码已于8.0.28被完全删除,该查询的实现方式全然不同,该bug亦随之消失。

若不能尽快升级,可添加/*+ NO_BNL */ hint绕过有问题的执行计划,或添加索引绕过hashjoin。

文章来自个人专栏
问题分析
3 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0