left join结果不对

看我第一个截图,忽略这个关联条件,直接判断值是否相等;结果里 charge_code 和 charge_device_code 值是相等的

has_trim.txt (171.3 KB)
no_trim.txt (163.1 KB)

应该是字段存在空格导致的,select hex(column), column from table where xxx=xxx; 您使用hex函数,看下关联字段匹配不上的两个值的hex函数结果是一样的么![image|456x59]
(upload://ycvWWueK11m8TYhMCcsHHqMOKJm.png) ,字符串存在空格会匹配不上

去掉关联条件,观察 hex 值是一样的。

加上关联条件,就是关联不上

给关联条件不加 trim,加 hex 也能关联上:

加上 broadcast hint 如 base left join [broadcast] fault 就好了,会不会是 bucket shuffle join 的问题呢。

这种方式您发个结果的截图看下

换成 shuffle hint 或者用 upper 函数替代 trim/hex 也可以成功关联上

@dongquan hello,请问下这是已知问题吗

怎么获取query_dump文件 - :speech_balloon: StarRocks 用户问答 / 日常运维 - StarRocks中文社区论坛 (mirrorship.cn) 看上去是bug,但是我这边没有复现出来,麻烦您参考这个文档提供下query_dump文件

dump_file (27.2 KB) 好的,辛苦

@dongquan 请问下有结论了么

正在确认, 请稍等.

辛苦再发一个结果错误的 profile。

现在不稳定了;发现跑 SQL,一会结果正确,一会错误;

相同 SQL,刚才执行了几次,发现每次结果不同(之前用户也反馈有这个问题);

  1. 关联上的 profile
    right.profile (292.3 KB)

  2. 没关联上的 profile
    error.profile (284.9 KB)

结果集只有 26 条;排除数据变动等因素干扰,因为只要给关联条件加上 upper, trim 等,结果就很稳定,都关联上了。这是加了 trim 的 profile
add_trim_on_join_key.profile (301.6 KB)

你好, 可以先将join不对的那条sql中, lead, lag这两个函数去掉看下join结果是否稳定吗?

@U_1664959442193_5951方便加微信看一下吗

原因找到了,

  • 原因:Cross Join 后面再 Hash Join,并且有的 Hash Table 是空的时候,可能会有问题。
  • 绕过方式:可以设置 parallel_fragment_exec_instance_num = 48; pipeline_dop=1; 等下个版本 2.3.13 发布了,再设置回 parallel_fragment_exec_instance_num = 1; pipeline_dop=0;