This is an automated email from the ASF dual-hosted git repository.

xuzifu666 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite.git


The following commit(s) were added to refs/heads/main by this push:
     new 88fe7d2c3f [CALCITE-7398] Incorrect int cast in VariantNonNull#cast 
for BIGINT
88fe7d2c3f is described below

commit 88fe7d2c3f63e097b0651f3215f37899aadac4b7
Author: Heng Qian <[email protected]>
AuthorDate: Mon Jan 26 16:44:34 2026 +0800

    [CALCITE-7398] Incorrect int cast in VariantNonNull#cast for BIGINT
    
    Signed-off-by: Heng Qian <[email protected]>
---
 .../main/java/org/apache/calcite/runtime/variant/VariantNonNull.java    | 2 +-
 testkit/src/main/java/org/apache/calcite/test/SqlOperatorTest.java      | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git 
a/core/src/main/java/org/apache/calcite/runtime/variant/VariantNonNull.java 
b/core/src/main/java/org/apache/calcite/runtime/variant/VariantNonNull.java
index fa296ac702..9c288e3058 100644
--- a/core/src/main/java/org/apache/calcite/runtime/variant/VariantNonNull.java
+++ b/core/src/main/java/org/apache/calcite/runtime/variant/VariantNonNull.java
@@ -286,7 +286,7 @@ public class VariantNonNull extends VariantSqlValue {
           break;
         }
         case BIGINT: {
-          long l = (int) value;
+          long l = (long) value;
           switch (type.getTypeName()) {
           case TINYINT:
           case SMALLINT:
diff --git a/testkit/src/main/java/org/apache/calcite/test/SqlOperatorTest.java 
b/testkit/src/main/java/org/apache/calcite/test/SqlOperatorTest.java
index 5530349604..c7144c92fb 100644
--- a/testkit/src/main/java/org/apache/calcite/test/SqlOperatorTest.java
+++ b/testkit/src/main/java/org/apache/calcite/test/SqlOperatorTest.java
@@ -1868,6 +1868,8 @@ void testCastToBoolean(CastType castType, 
SqlOperatorFixture f) {
         "INTEGER ARRAY");
     f.checkScalar("cast(cast('abc' as VARIANT) AS VARCHAR)", "abc", "VARCHAR");
     f.checkScalar("cast(cast('abc' as VARIANT) AS CHAR(3))", "abc", "CHAR(3)");
+    // Test for [CALCITE-7398] Incorrect int cast in VariantNonNull#cast for 
BIGINT
+    f.checkScalar("cast(cast(2147483648 as VARIANT) as DECIMAL)", 
"2147483648", "DECIMAL(19, 0)");
 
     // Converting a variant to anything that does not match the runtime type 
returns null
     f.checkScalar("cast(cast(1 as VARIANT) as INTEGER)", "1", "INTEGER");

Reply via email to