mihaibudiu commented on code in PR #4679:
URL: https://github.com/apache/calcite/pull/4679#discussion_r2611706526
##########
core/src/main/java/org/apache/calcite/adapter/enumerable/RexToLixTranslator.java:
##########
@@ -430,6 +430,9 @@ private Expression getConvertExpression(
return Expressions.call(BuiltInMethod.STRING_TO_BOOLEAN.method,
operand);
default:
+ if (sourceType.getFamily() == SqlTypeFamily.NUMERIC) {
+ return Expressions.call(BuiltInMethod.STRING_TO_BOOLEAN.method,
operand);
Review Comment:
I don't understand why you call string_to_boolean for a numeric value
##########
testkit/src/main/java/org/apache/calcite/test/SqlOperatorTest.java:
##########
@@ -825,6 +825,18 @@ void testCastToExactNumeric(CastType castType,
SqlOperatorFixture f) {
f.checkNull("CAST(CAST(NULL AS VARCHAR) AS VARBINARY)");
}
+ /**
+ * Test case for <a
href="https://issues.apache.org/jira/browse/CALCITE-7323">
+ * Result of cast Number to Boolean is not correct</a>. */
+ @Test public void testNumbericBooleanCast() {
+ SqlOperatorFixture f = fixture();
+ f.checkScalar("CAST(1 AS BOOLEAN)", "true", "BOOLEAN NOT NULL");
+ f.checkScalar("CAST(2 AS BOOLEAN)", "true", "BOOLEAN NOT NULL");
+ f.checkScalar("CAST(0 AS BOOLEAN)", "false", "BOOLEAN NOT NULL");
+ f.checkScalar("CAST(1.2 AS BOOLEAN)", "true", "BOOLEAN NOT NULL");
Review Comment:
what happens for DOUBLE values?
Can you try with 0e0 and a value which evaluates to -0e0? (You cannot write
-0e0 as a literal).
Can you add tests for non-constant values and NULL values?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]