首批通过分布式安全可靠测评,为关键业务系统打造
查询使用含有 /*! */ 注释且有常量使用的 SQL 语句可能会导致 core dump
更新时间:2026-06-04 09:56
问题现象
针对如下含有 /*! */ 注释的 SQL 语句会进行 normal parser 和 fast parser 两种解析,normal parser 的常量节点个数是 3,而 fast parser 的常量节点个数是 4(存在解析缺陷),会导致上述场景中出现 fast parser 和 normal parser 的常量个数不一致而发生越界访问数组导致 core 的可能性。
select /*!00000 1,2,3*/ from dual;
问题原因
fast parser 识别含有 /*! */ 注释的 SQL 语句的常量时,应该保持和 normal parser 一样的处理,保证两边的解析出来的个数保持一致,避免因为个数不一样导致后续访问越界的可能。
问题的风险及影响
偶现问题,可能会导致服务宕机,有一定风险,建议升级。
影响租户
影响 OceanBase 数据库中的 Oracle 租户和 MySQL 租户,对于 SYS 租户无影响。
影响版本
OceanBase 数据库 V3.2.3 GA(oceanbase-3.2.3.0-20220418212020)及之后版本、V3.2.4 GA(oceanbase-3.2.4.0-100000072022102819)及之后版本、V4.1.0 GA(oceanbase-4.1.0.0-100001122023040322)及之后版本。
解决方法及规避方式
去掉相关的含有
/*! */注释常量的用法。升级到问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V3.2.3 BP8 Hotfix4(oceanbase-3.2.3.3-108040052023060909)版本、V3.2.3 BP8 Hotfix5(oceanbase-3.2.3.3-108050012023070409)版本、V3.2.3 BP8 Hotfix6(oceanbase-3.2.3.3-108060012023102510)版本、V3.2.3 BP9(oceanbase-3.2.3.3-109000182023071410)及之后版本、V3.2.4 BP2(oceanbase-3.2.4.2-102000042023022717)及之后版本、V4.1.0 BP1(oceanbase-4.1.0.0-101000052023050621)及之后版本。