问题现象
层次查询 connect_by_root 列时,如果使用索引列,执行阶段报错 -4017。
问题原因
原先 connect_by_root 表达式只在 root 节点写值,其余只设置已计算标记,某种场景下,表达式的值会被下层算子改变。
问题的风险及影响
当层次查询使用索引列计算 connect_by_root 表达式时,且下层算子将其值改变的场景下,发生的概率小。遇到后可以通过删除索引列的方式进行临时规避。
影响租户
影响 OceanBase 数据库中的 Oracle 租户和 MySQL 租户,对于 SYS 租户无影响。
影响的版本
OceanBase 数据库企业版 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 数据库企业版 V3.2.3 BP6(oceanbase-3.2.3.3-106000102022111521)及之后版本、V3.2.4 BP2(oceanbase-3.2.4.2-102000042023022717)及之后版本。