This is an automated email from the ASF dual-hosted git repository. caiconghui pushed a commit to branch bugfix_cast in repository https://gitbox.apache.org/repos/asf/doris.git
commit 5e1c7a80eea6a5ca7e2431349852ba9cc9df88e9 Author: caiconghui1 <[email protected]> AuthorDate: Fri Dec 26 14:44:55 2025 +0800 fix(cast): fix cast int to string instead of cast string to double for equalTo --- .../org/apache/doris/nereids/util/TypeCoercionUtils.java | 4 +++- .../apache/doris/nereids/util/TypeCoercionUtilsTest.java | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/TypeCoercionUtils.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/TypeCoercionUtils.java index 641dd4f76dc..4e9e86fd9b8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/TypeCoercionUtils.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/TypeCoercionUtils.java @@ -34,6 +34,7 @@ import org.apache.doris.nereids.trees.expressions.CaseWhen; import org.apache.doris.nereids.trees.expressions.Cast; import org.apache.doris.nereids.trees.expressions.ComparisonPredicate; import org.apache.doris.nereids.trees.expressions.Divide; +import org.apache.doris.nereids.trees.expressions.EqualTo; import org.apache.doris.nereids.trees.expressions.Expression; import org.apache.doris.nereids.trees.expressions.InPredicate; import org.apache.doris.nereids.trees.expressions.IntegralDivide; @@ -1314,7 +1315,8 @@ public class TypeCoercionUtils { if (GlobalVariable.enableNewTypeCoercionBehavior) { commonType = findWiderTypeForTwo(left.getDataType(), right.getDataType(), false, false); } else { - commonType = findWiderTypeForTwoForComparison(left.getDataType(), right.getDataType(), false); + commonType = findWiderTypeForTwoForComparison(left.getDataType(), right.getDataType(), + comparisonPredicate instanceof EqualTo); } if (commonType.isPresent()) { diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/TypeCoercionUtilsTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/TypeCoercionUtilsTest.java index 5931331096b..4ca526247a8 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/TypeCoercionUtilsTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/TypeCoercionUtilsTest.java @@ -35,6 +35,7 @@ import org.apache.doris.nereids.trees.expressions.literal.DateV2Literal; import org.apache.doris.nereids.trees.expressions.literal.DecimalLiteral; import org.apache.doris.nereids.trees.expressions.literal.DecimalV3Literal; import org.apache.doris.nereids.trees.expressions.literal.DoubleLiteral; +import org.apache.doris.nereids.trees.expressions.literal.IntegerLiteral; import org.apache.doris.nereids.trees.expressions.literal.StringLiteral; import org.apache.doris.nereids.trees.expressions.literal.VarcharLiteral; import org.apache.doris.nereids.types.ArrayType; @@ -64,6 +65,7 @@ import org.apache.doris.nereids.types.TimeV2Type; import org.apache.doris.nereids.types.TinyIntType; import org.apache.doris.nereids.types.VarcharType; import org.apache.doris.nereids.types.coercion.IntegralType; +import org.apache.doris.qe.GlobalVariable; import com.google.common.collect.ImmutableList; import org.junit.jupiter.api.Assertions; @@ -322,4 +324,16 @@ public class TypeCoercionUtilsTest { Assertions.assertThrows(AnalysisException.class, () -> TypeCoercionUtils.getNumResultType(StructType.SYSTEM_DEFAULT)); Assertions.assertThrows(AnalysisException.class, () -> TypeCoercionUtils.getNumResultType(QuantileStateType.INSTANCE)); } + + @Test + public void testProcessEquealToStringCoercoin() { + GlobalVariable.enableNewTypeCoercionBehavior = false; + EqualTo equalTo = new EqualTo( + new SlotReference("c1", StringType.INSTANCE), + new IntegerLiteral(3) + ); + EqualTo expression = (EqualTo) TypeCoercionUtils.processComparisonPredicate(equalTo); + Assertions.assertEquals(StringType.INSTANCE, expression.left().getDataType()); + Assertions.assertEquals(StringType.INSTANCE, expression.right().getDataType()); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
