This is an automated email from the ASF dual-hosted git repository. tkalkirill pushed a commit to branch ignite-29021 in repository https://gitbox.apache.org/repos/asf/ignite.git
commit e2b035785f985bae16b880c1b110bb22f0a83feb Author: Kirill Tkalenko <[email protected]> AuthorDate: Fri Aug 28 16:12:47 2026 +0300 IGNITE-29021 Wip --- .../query/calcite/exec/exp/ConverterUtils.java | 4 ++-- .../UserDefinedFunctionsIntegrationTest.java | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/ConverterUtils.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/ConverterUtils.java index fbbdc18be36..3d61ad80048 100644 --- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/ConverterUtils.java +++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/ConverterUtils.java @@ -495,9 +495,9 @@ public class ConverterUtils { * Handles decimal type specifically with explicit type conversion. */ private static Expression convertAssignableType(Expression argument, Type targetType) { - if (targetType != BigDecimal.class) + if (targetType != BigDecimal.class || !Types.needTypeCast(argument.getType(), targetType)) return argument; - return convert(argument, targetType); + return convertToDecimal(argument, Commons.typeFactory().createSqlType(SqlTypeName.DECIMAL)); } } diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/UserDefinedFunctionsIntegrationTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/UserDefinedFunctionsIntegrationTest.java index 0217b6359bb..7fff7a10818 100644 --- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/UserDefinedFunctionsIntegrationTest.java +++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/UserDefinedFunctionsIntegrationTest.java @@ -17,6 +17,7 @@ package org.apache.ignite.internal.processors.query.calcite.integration; +import java.math.BigDecimal; import java.sql.Timestamp; import java.util.Arrays; import java.util.Collection; @@ -452,6 +453,16 @@ public class UserDefinedFunctionsIntegrationTest extends AbstractBasicIntegratio ); } + /** */ + @Test + public void testBigDecimalFunctionArgument() { + client.getOrCreateCache(new CacheConfiguration<>("decimal-functions") + .setSqlSchema("UDF") + .setSqlFunctionClasses(OtherFunctionsLibrary2.class)); + + assertQuery("SELECT udf.decimalToInt(5)").returns(5).check(); + } + /** */ @SuppressWarnings("ThrowableNotThrown") private void assertThrows(String sql) { @@ -739,6 +750,12 @@ public class UserDefinedFunctionsIntegrationTest extends AbstractBasicIntegratio public static int sameSign2(int v) { return v; } + + /** */ + @QuerySqlFunction + public static int decimalToInt(BigDecimal val) { + return val.intValue(); + } } /** */
