首批通过分布式安全可靠测评,为关键业务系统打造
select a(a'') 断连接的问题
更新时间:2026-06-03 03:01
问题现象
在函数的参数中用空字符串做参数的别名会导致 core。 现象如下:
select a(a '');
关键诊断信息
触发条件
在函数的参数中用空字符串做参数的别名。
问题原因
dup_node_string 这个函数在参数为空的时候返回一个 4016 的错误,这个错误会导致 client 断连接。
问题的风险及影响
导致 client 断连接,需要重连接。
影响租户
影响 OceanBase 数据库中的 Oracle 租户和 MySQL 租户,对于 SYS 租户无影响。
影响的版本
OceanBase 数据库 V2.2.77 GA(oceanbase-2.2.77-20210508211731)及之后版本、V3.1.2 GA(oceanbase-3.1.2-20210618150922)及之后版本、V3.2.3 GA(oceanbase-3.2.3.0-20220418212020)及之后版本。
解决方法
升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V2.2.77 BP14(oceanbase-2.2.77-114000072022120410)及之后版本、V3.1.2 BP10(oceanbase-3.1.2-110000022022092714)及之后版本、V3.2.3 BP6(oceanbase-3.2.3.3-106000102022111521)及之后版本。
在
parser调用dup_node_string的入口处对参数是否为空进行判断。
规避方式
避免函数参数中出现空字符串做别名的情况。