vlsi commented on a change in pull request #2225:
URL: https://github.com/apache/calcite/pull/2225#discussion_r509979806
##########
File path:
core/src/main/java/org/apache/calcite/rel/rules/AggregateCaseToFilterRule.java
##########
@@ -227,8 +227,11 @@ protected AggregateCaseToFilterRule(RelBuilderFactory
relBuilderFactory,
RelCollations.EMPTY, aggregateCall.getType(),
aggregateCall.getName());
} else if (kind == SqlKind.SUM // Case B
- && isIntLiteral(arg1) && RexLiteral.intValue(arg1) == 1
- && isIntLiteral(arg2) && RexLiteral.intValue(arg2) == 0) {
+ && isIntLiteral(arg1)
+ && RexLiteral.intValue(arg1) == 1
+ && isIntLiteral(arg2)
+ && !RexLiteral.isNullLiteral(arg2)
Review comment:
Then there might be a rounding issue. Currently `isIntLiteral` returns
true for `TINYINT, SMALLINT, INTEGER, BIGINT`. Apparently, `intValue` would
return the wrong result in case `BigDecimal` contains values like
`123456789012345678901234567890` that will be truncated. It should be
`BigDecimal#intValueExact()` rather than `intValue()`
----------------------------------------------------------------
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.
For queries about this service, please contact Infrastructure at:
[email protected]