首批通过分布式安全可靠测评,为关键业务系统打造
含多个 in 和向量表达式的 SQL 执行报错 4016
更新时间:2026-05-28 02:06
问题现象
对于一条含 c1,c2,c3 列的查询语句,如果列 c1,c2 命中索引,且 c1 或 c2 列上有多个 in 表达式,c1/c2/c3 任意组成一个向量表达式,那么在执行的时候就会报 internal error。
ORA-00600: internal error code, arguments: -4016, Internal error
问题原因
抽取 query range 阶段,对向量表达式的处理有问题,导致 in 优化后在含向量表达式的场景下走到了错误的路径。
问题的风险及影响
查询 SQL 报 internal error。
影响的版本
OceanBase 数据库企业版 V4.1.X、V3.2.X、V3.1.X、V2.2.X 版本。
解决方法及规避方式
- 改索引,避免
in表达式命中索引 - 将
in表达式拆成or。 - 将向量表达式拆成等价的普通表达式。