我正在使用 impala-jdbc 2.6.4.1005 写入 Kudu 表。
将值为 7896163500 的 BigDecimal 插入 DECIMAL(20,2) 时出现此错误。
[Cloudera][ImpalaJDBCDriver](500051) ERROR processing query/statement. Error Code: 0, SQL state: TStatus(statusCode:ERROR_STATUS, sqlState:HY000, errorMessage:AnalysisException: Possible loss of precision for target table 'ST.RFQ_SPOT'.
Expression '7896163500' (type: BIGINT) would need to be cast to DECIMAL(20,2) for column 'req_amount'
但是,我插入的值也适合 DECIMAL(12,2)。我不明白为什么我会从驱动程序那里收到此错误。
如果我将列定义为 DECIMAL(30,2) 它可以正常工作。
此外,如果我尝试手动进行演员表,我会得到预期的结果:
select cast (cast(7896163500 as BIGINT) as DECIMAL(12,2))
1 7896163500.00