环境信息
驱动版本:oceanbase-client 2.4.14 ~ 2.4.18
租户模式:Oracle 兼容模式
现象:
- 建表字段:INTEREST_RATE NUMBER(18,8),明确声明小数位 s=8>0;
- JDBC ResultSetMetaData 查询结果:
getColumnType () = Types.SMALLINT
getScale () = 8 - 出现自相矛盾元数据:标准 SMALLINT 为整型,不应同时 scale>0;原生 Oracle ojdbc 对于 NUMBER (p,s),s>0 稳定返回 Types.NUMERIC。
影响:
DBeaver 等通用 GUI 客户端依靠 getColumnType 区分整数 / 小数渲染分支;识别为 SMALLINT 后 UI 直接丢弃小数部分。
Java 代码直接调用 getBigDecimal () 取值正常,不受影响。
诉求:
Oracle 租户下,当 NUMBER 字段定义 s>0 时,getColumnType 统一返回 Types.NUMERIC,对齐 Oracle 官方 JDBC 行为,输出符合 JDBC 语义、无冲突的元数据。
