oms4.2.0-ce迁移mysql5.7到ob-4.1.0-ce,全量校验报错了

【 使用环境 】 测试环境
【 OB or 其他组件 】OB 、OMS
【 使用版本 】OB 4.1.0-ce OMS 4.2.0-ce
【问题描述】oms4.2.0-ce迁移mysql5.7到ob-4.1.0-ce,全量校验报错了,报错的表源端有float(x,x)类型的字段,迁移到ob后,float字段转换成decimal类型了,报错如下:


报错日志如下:
155 [2023-10-26 10:24:55.403] [ERROR] [verify-thread-1] [compare master table order_center_uat.order_car_base_info field invoice_price meet error]
156 java.lang.ClassCastException: com.oceanbase.oms.record.value.fieldvalue.StringFieldValue cannot be cast to com.oceanbase.oms.record.value.fieldvalue.DoubleFieldValue
157 at com.oceanbase.verify.common.model.CompareLibrary.compareFloat(CompareLibrary.java:94)
158 at com.oceanbase.verify.core.comparev2.impl.DefaultColumnValueComparator.compareFieldValue(DefaultColumnValueComparator.java:52)
159 at com.oceanbase.verify.common.util.RecordUtil.iteratorFields(RecordUtil.java:79)
160 at com.oceanbase.verify.core.comparev2.DefaultRecordComparator.comare(DefaultRecordComparator.java:19)
161 at com.oceanbase.verify.core.comparev2.VerifySelector.compareRecord(VerifySelector.java:187)
162 at com.oceanbase.verify.worker.verify.VerifyThread.compareRecord(VerifyThread.java:125)
163 at com.oceanbase.verify.worker.verify.VerifyThread.verifyRecordBatch(VerifyThread.java:109)
164 at com.oceanbase.verify.worker.verify.VerifyThread.run(VerifyThread.java:70)
165 at java.lang.Thread.run(Thread.java:853)
166 [2023-10-26 10:24:55.404] [ERROR] [verify-thread-1] [verify thread verify-thread-1 meet error]
【复现路径】问题出现前后相关操作
【问题现象及影响】

【附件】

麻烦把源端报错的表结构提供一下,在OB4.1/4.2上测试,内核是支持float转为decimal类型的。

有约束的列修改类型兼容情况:
https://www.oceanbase.com/docs/community-oms-cn-1000000000248488

无约束的列修改类型兼容情况:
https://www.oceanbase.com/docs/community-oms-cn-1000000000248489

oms当前版本都不支持将float类型转为decimal类型

ob有如下设置,将float自动转换为decimal,是oms表结构迁移的时候,ob自动将float转换为decimal了
ALTER SYSTEM SET _ENABLE_CONVERT_REAL_TO_DECIMAL = TRUE;

@fengye 目前怀疑跟上面回复的这个有关系,虽然内核是支持的,但是在oms上目前还不支持float转decimal类型,具体还在确认。

OMS 全量校验确实不支持float->decimal类型转换时的校验,已经记录,预计下个迭代修复

好的