问题现象
业务侧执行 SQL 报错 4016。

关键日志信息如下。
[2024-11-26 22:36:00.933953] WDIAG [SQL.ENG] iterate_both_children (ob_merge_join_op.cpp:1392) [146551][T1002_L0_G0][T1002][xxxxx-xxxxx-xxxxx-xxxxx] [lt=9][errcode=-4016] unexpected negative mem bound(ret=-4016, t_mem_bound_new_bound=838860, r_new_bound=851968, l_store->get_mem_hold()=1900544
问题原因
该问题属于缺陷,导致 merge join 计算出现错误。
问题的风险及影响
SQL 执行报错。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V4.x 版本。
解决方法
升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V4.2.1 BP9(oceanbase-4.2.1.9-109000092024091919)及之后版本、V4.2.4(oceanbase-4.2.4.0-100000252024070621)及之后版本、V4.2.5(oceanbase-4.2.5.0-100000082024102022)及之后版本、V4.3.2(oceanbase-4.3.2.0-100000442024071321)及之后版本。
规避方式
绑定 Hint 控制 merge join 走 hash join。