通过mysql ODBC 连接至doris查询时,通过长sql进行查询出现sql被截断导致查询失败

Viewed 44

当前doris版本为2.0.14,odbc版本为5.3
企业微信截图_17261227677661.png
执行返回如下:
企业微信截图_17261230052740.png
相同sql采用非odbc方式连接或通过mysql client 均能正常执行
删减部分sql后采用odbc方式也能正常返回
通过抓包发现被截断sql内容均位于最后一个报文,怀疑是因为出现了多次PSH,ACK报文后仅获取或拼接首个报文导致后续报文丢失
企业微信截图_17261094105379.png

---------------2024/09/14------------------
当sql字符刚好达到在分片时会分出999长度包与第二个包时fe错误日志如下:
企业微信截图_17262952252501.png
而如果sql更长则会变成这样:
企业微信截图_17262952424056.png

这里面使用的sql都如同下图
select * from table limit 10; 并通过多行注释增加字符长度
企业微信截图_17262954918859.png

后续发现在部分机器上不会出现这个问题,通过对比报文发现存在异常的数据报文中data均被加密
企业微信截图_17262956434898.png

之后通过新增SSLMode字段解决了这个问题,这里配置disabled可以解决问题
企业微信截图_17262959077051.png

怀疑有配置会导致ODBC在未配置SSLMode的情况下默认对报文进行加密,并且与常规加密报文存在不同导致解析出错

---------------2024/09/14 第二次更新------------------
检查fe配置后发现是有人打开了ssl功能,并使用了默认的证书。但是为什么相同的配置下有的机器会启用ssl模式,有的机器不会还没有找到原因

1 Answers

这个可以提供一下fe.log还有你odbc查询的sql