From 23c58dca16f38b7ce33235df2e2fe132223bedd9 Mon Sep 17 00:00:00 2001 From: guojn1 Date: Thu, 30 Jul 2026 10:03:27 +0800 Subject: [PATCH] [fix][runtime] Precision loss when converting long string to long type --- .../dingodb/expr/runtime/op/cast/LongCastCheckOpFactory.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/runtime/src/main/java/io/dingodb/expr/runtime/op/cast/LongCastCheckOpFactory.java b/runtime/src/main/java/io/dingodb/expr/runtime/op/cast/LongCastCheckOpFactory.java index a2460063..d5f949b4 100644 --- a/runtime/src/main/java/io/dingodb/expr/runtime/op/cast/LongCastCheckOpFactory.java +++ b/runtime/src/main/java/io/dingodb/expr/runtime/op/cast/LongCastCheckOpFactory.java @@ -189,6 +189,9 @@ protected Long evalNonNullValue(@NonNull Object value, ExprConfig config) { if (config.getExprContext() != ExprContext.CALC_VALUE) { return longCastWithStringCompat((String)value); } + if (((String) value).length() > 15) { + return longCastWithStringCompat((String)value); + } return longCast(Double.parseDouble((String) value)); } else if (value instanceof Boolean) { return longCast((Boolean) value);