From ece52c72a594b0d598340292e6a3b9c217a1fe3f Mon Sep 17 00:00:00 2001 From: morrySnow <101034200+morrySnow@users.noreply.github.com> Date: Thu, 8 Aug 2024 17:11:49 +0800 Subject: [PATCH] [fix](Nereids) cast to boolean wrong when constant folding by be (#39019) pick from master #39019 not add case because be return wrong answer for this select cast(2.0 as boolean); -- should return 1 not 2 --- .../nereids/rules/expression/rules/FoldConstantRuleOnBE.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java index 101929eb0cd8ca..706d384be539f0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java @@ -330,7 +330,7 @@ public static List getResultExpression(DataType type, PValues resultCon } else if (type.isBooleanType()) { int num = resultContent.getUint32ValueCount(); for (int i = 0; i < num; ++i) { - Literal literal = BooleanLiteral.of(resultContent.getUint32Value(i) == 1); + Literal literal = BooleanLiteral.of(resultContent.getUint32Value(i) != 0); res.add(literal); } } else if (type.isTinyIntType()) {