This is an automated email from the ASF dual-hosted git repository. amashenkov pushed a commit to branch ignite-27390 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 0c647ddb1afe51f33be0512e344350871e4531c3 Author: AMashenkov <[email protected]> AuthorDate: Fri Dec 26 14:40:07 2025 +0300 Drop useless code --- .../ignite/internal/sql/engine/util/RexUtils.java | 33 +--------------------- 1 file changed, 1 insertion(+), 32 deletions(-) diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/RexUtils.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/RexUtils.java index c564c2e42e8..54001d42ebe 100644 --- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/RexUtils.java +++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/RexUtils.java @@ -1477,37 +1477,6 @@ public class RexUtils { return source.getPrecision() <= target.getPrecision(); } - return isLosslessCast(source, target); - } - - // TODO: https://issues.apache.org/jira/browse/IGNITE-27390 - // This is copy of RexUtil.isLosslessCast from Calcite 1.40. We should replace RexUtils.isLosslessCast - // with calcite's implementation. - private static boolean isLosslessCast(RelDataType source, RelDataType target) { - final SqlTypeName sourceSqlTypeName = source.getSqlTypeName(); - final SqlTypeName targetSqlTypeName = target.getSqlTypeName(); - // 1) Both INT numeric types - if (SqlTypeFamily.INTEGER.getTypeNames().contains(sourceSqlTypeName) - && SqlTypeFamily.INTEGER.getTypeNames().contains(targetSqlTypeName)) { - return targetSqlTypeName.compareTo(sourceSqlTypeName) >= 0; - } - // 2) Both CHARACTER types: it depends on the precision (length) - if (SqlTypeFamily.CHARACTER.getTypeNames().contains(sourceSqlTypeName) - && SqlTypeFamily.CHARACTER.getTypeNames().contains(targetSqlTypeName)) { - return targetSqlTypeName.compareTo(sourceSqlTypeName) >= 0 - && source.getPrecision() <= target.getPrecision(); - } - // 3) From NUMERIC family to CHARACTER family: it depends on the precision/scale - if (sourceSqlTypeName.getFamily() == SqlTypeFamily.NUMERIC - && targetSqlTypeName.getFamily() == SqlTypeFamily.CHARACTER) { - int sourceLength = source.getPrecision() + 1; // include sign - if (source.getScale() != -1 && source.getScale() != 0) { - sourceLength += source.getScale() + 1; // include decimal mark - } - final int targetPrecision = target.getPrecision(); - return targetPrecision == RelDataType.PRECISION_NOT_SPECIFIED || targetPrecision >= sourceLength; - } - // Return FALSE by default - return false; + return RexUtil.isLosslessCast(source, target); } }
