首批通过分布式安全可靠测评,为关键业务系统打造
SQL 执行出现 check_column_in_current_level_stmt get unexpected expr 异常
更新时间:2026-05-29 08:46
问题现象
某 SQL 在执行时出现 -4016,日志伴如下异常信息。
observer.log.20240527153252:[2024-05-27 15:30:24.357803] WARN [SQL.OPT] calculate_distinct (ob_opt_selectivity.cpp:3624) [50219][0][xxxxxx-xxxxxx-xxxxx-xxxxx] [lt=14] [dc=0] failed to check column in current level stmt(ret=-4016)
observer.log.20240527153252:[2024-05-27 15:30:24.357809] WARN [SQL.OPT] add_generate_table_meta_info (ob_opt_selectivity.cpp:373) [50219][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=5] [dc=0] failed to calculate distinct(ret=-4016)
问题原因
OceanBase 集群内部会对SQL进行改写,在某些改写情况下针对某些 SQL 存在改写缺陷,从而在生成执行计划时出现非预期异常,导致该错误。
问题的风险及影响
SQL 执行失败。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V2.x 和 V3.x 版本。
解决方法及规避方式
解决方法:
升级 OceanBase 数据库至 V4.x 版本。
规避方式:
增加如下 hint:/+no_rewrite/ 。