为什么这条简单的SQL会被认为是笛卡尔乘积?

优化器在逻辑优化部分把这个通过索引获取max(),min()的转换成了两个topN然后做cross join了。
在逻辑优化后检查经过逻辑优化后的SQL是否存在cross join并且是否设置了performance.cross-join=false,如果是,那么就会报你刚才的那个错误。这个我认为可以理解为优化器的BUG,毕竟cross join是优化器自己做逻辑优化产生的,并不是用户行为。
临时绕过方法就是去掉这个performance.cross-join=false 配置参数。
去提一个issue吧。

1 个赞