left join结果不对

【详述】left join 查询, 查询的结果不对, 应该能关联上, 结果关联不上
【背景】做过哪些操作?
【业务影响】
【StarRocks版本】2.3.11
【集群规模】3fe + 10be
【机器信息】CPU虚拟核/内存/网卡,例如:48C/64G/万兆
【联系方式】18829283520
【附件】
error.sql (6.2 KB)
如果不带这个关联条件 on base.charger_code = fault.charge_device_code ,可以看到 base 表的 charge_code 和 fault 表的 charge_device_code 是有相等的值的。

但是带上关联条件后,发现关联结果里没有上述的值。

然后发现给关联字段带上 trim 函数就能关联成功

关联条件字段会有空格么?请发下使用trim还有不使用trim的explain,获取方式是explain +sql

看我第一个截图,忽略这个关联条件,直接判断值是否相等;结果里 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结果是否稳定吗?