子查询中order by无效问题

【详述】子查询的中order by无效;例如 select * from table1 order by id 是正常的;如果使用select * from (select * from table1 order by id) kk 查询结果并未进行全局排序;
【背景】
【业务影响】当前使用的业界成熟可视化工具,工具的列表的列上面可以点击排序,会自动在后台封装成子查询中order by的样子,当前由于starrocks 子查询order by无效,导致界面的排序不可用。
【StarRocks版本】例如:2.4.0
【集群规模】例如:3fe(2 follower+1 leader)+7be(fe与be混部)
【机器信息】CPU虚拟核/内存/网卡,例如:40C/256G/万兆
【附件】

  • fe.log/beINFO/相应截图
  • 慢查询:
    • Profile信息
    • 并行度:show variables like ‘%parallel_fragment_exec_instance_num%’;
      image
    • pipeline是否开启:show variables like ‘%pipeline%’;
      image

收到 我们确认一下

这个看上去是符合预期的。分布式场景下不加上order by没法保障子查询有序。

既然用的是mysql的jdbc,应该跟mysql的结果一样吧,要不然很多适配mysql的成熟产品,在切换到starrocks的时候,会出现莫名其妙的问题

这个是SQL的标准语义决定的,单机数据库容易做,所以默认就这样做了。

子查询排序无效一直未解决吗?
这个问题很致命吧,很多BI产品都是这种语法

https://blog.csdn.net/weixin_44457814/article/details/101450044

老师,您好,在mysql8.0版本中 子查询中的order by已经是有效的了,目前只有个别版本(mysql5.7)有这个问题,遵循了这个标准。并且现在各大引擎如spark\ATHENA 等,子查询中的order by都是有效的,请问一下sr在这个问题上能否同步一下?

应该不会同步,这不是SQL标准,取决于实现