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");