前言
最近公司终于肯将万恶的doris 1.2升级到2.1.11了,然而碰到了非常多的坑。
精度表达问题
2.1比1.2最大的提升是精度改进和效率提升。但是为了改进这一块,舍弃了大量1.2的兼容性。特别是出现以varchar存储的大数与普通bigint存储的大数进行关联时。两者会被隐式转换成double,但是double的精度是有限的,一旦超越了16位数就会出现匹配精度不够导致的意外发散问题。因此需要全面对代码进行显示声明改造。
浮点数返回值类型问题
这个严格来说倒是不算bug,更规范了,浮点的jdbc返回从默认的double变成标准的decimal,更符合财务范围的数据标准。
官方函数的变化
这个是最坑的地方,官方文档完全没说这块的变化,但实际上像date之类的函数特性都完全变了。然后像nvl和ifnull如果用在表关联条件都上都话都有可能会出现异常返回空的情况。
感想
下次升级真的不要忘了对官方函数进行回归测试。虽然我感觉大概率也不会有下次了。