starrocks的cbo支持cse和cte, 公共子表达式优化吗? 执行计划膨胀的很厉害 跑不出来

为了更快的定位您的问题,请提供以下信息,谢谢
【详述】问题详细描述

sql中有很多重复的子查询, 生成 的sql最后就变的很大, 数据跑不出来

【背景】做过哪些操作?
【业务影响】
【是否存算分离】
【StarRocks版本】例如:3.3.2
【集群规模】例如:1fe(1 follower+0observer)+1be(fe与be混部)
【机器信息】CPU虚拟核/内存/网卡,例如:32C/64G/万兆
【联系方式】为了在解决问题过程中能及时联系到您获取一些日志信息,请补充下您的联系方式,例如:社区群4-小李或者邮箱,谢谢
【附件】

  • fe.log/beINFO/相应截图
  • 慢查询:
    • Profile信息
    • 并行度:show variables like ‘%parallel_fragment_exec_instance_num%’;
    • pipeline是否开启:show variables like ‘%pipeline%’;
    • be节点cpu和内存使用率截图
  • 查询报错:
  • be crash
    • be.out
  • 外表查询报错
    • be.out和fe.warn.log

支持的 麻烦发下这个详细的profile 我们看下

大佬 可以加个微信吗 文本比较大不好上传

大佬 我改成了 cte的形式 好像只能优化一层 上面几层的就没有再优化了 请问有参数可以放开cte优化的层数限制吗

with a as (select t1.* from dwd_trd_sys_sale_order_detail_f t1, dim_product_spec t2 where t1.product_id = t2.product_id and t1.__id<10000),
     b as (select * from a union all select * from a),
     c as (select * from b t1 left join b t2 on t1.__id=t2.__id)
select * from c
union all
select * from c;

以这个sql为例的话, 是不是说因为a是join复用后代价减少所以复用了, b因为union 复用后代价没有减少所有b就不会被复用, c引用了b 复用c的话代价会减少, 但是由于b没有被复用 所以c就无法被复用? 导致的是局部最优, 没有实现top-down的近似最优?

还是说cte不能跨越exchange, 如果执行计划中算子的分布方式不同, 会划分两个fragment, 不同fragment的cte是不能嵌套复用的?

cte 能不支持一下强制改写