首批通过分布式安全可靠测评,为关键业务系统打造
union 子句有相同 output expr 且需要与其他表关联时,生成的 NLJ 计划执行结果错误
更新时间:2026-05-14 07:41
问题现象
用户查询的 union 子句有相同 output expr,并且需要与其他表关联时,生成的 NLJ 计划执行结果错误。
关键诊断信息
触发条件
查询的 union 子句有相同 output expr,并且需要与其他表关联,从而生成了 NLJ 执行计划。
问题原因
生成非基表条件下压路径时,对于 set stmt 下压了错误的条件,导致计划生成不对。
问题的风险及影响
查询执行结果错误。
影响租户
影响 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)及之后版本、V3.2.4 GA(oceanbase-3.2.4.0-100000072022102819)及之后版本。
解决方法
升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库企业版 V2.2.77 BP17(oceanbase-2.2.77-117000112023051914)、V3.2.3 BP8(oceanbase-3.2.3.3-108000062023041511)、V3.2.4 BP2(oceanbase-3.2.4.2-102000042023022717)。
- 使用 USE_HASH Hint 避免 NLJ 计划。
规避方式
使用 USE_HASH Hint 避免 NLJ 计划。