首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 数据库集群内执行 SQL 时出现 -4019 异常
更新时间:2026-05-29 08:46
问题现象
OceanBase 数据库集群内执行某类 in 值较多的语句时,会出现 -4019 异常,也可能会出现连接断开等异常,通常 OceanBase 数据库内部会伴随如下日志。

failed to generate the access path for the single-table query((ret=-4019, get_stmt()->get_sql_stmt()=select id, task_id, task_def_code, user_id, name, description, version, task_revision_id, tenant_id, data_project_id, namespace_id, commit_user, commit_time, commit_message, gmt_create, gmt_modified, gmt_delete, is_deleted from done_task_history t, (select task_id v_task_id, MAX(version) as v_max_version from done_task_history where task_id in (,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,) group by task_id) v where t.task_id = v.v_task_id and t.version = v.v_max_version and t.task_id in (,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,))
关键信息
关键日志。
failed to generate the access path for the single-table query((ret=-4019, get_stmt()->get_sql_stmt()=select id, task_id, task_def_code, user_id, name, description, version, task_revision_id, tenant_id, data_project_id, namespace_id, commit_user, commit_time, commit_message, gmt_create, gmt_modified, gmt_delete, is_deleted from done_task_history t, (select task_id v_task_id, MAX(version) as v_max_version from done_task_history where task_id in (,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,) group by task_id) v where t.task_id = v.v_task_id and t.version = v.v_max_version and t.task_id in (,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,,,xxx,))
问题原因
该问题的原因是 SQL 语句内存在大量的 in-values 值导致,由于 OceanBase 数据库处理此类 SQL 时要进行多次递归,如果递归次数过多超过 stack_size 值时会出现此类异常
问题的风险及影响
SQL 执行失败。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V2.x、V3.x、V4.x 版本。
解决方法
优化 SQL 语句,减少 SQL 内 in-value。
规避方式
SQL 内的 in-value 值建议控制在合理的范围内,建议少于 1000 个。