in core/src/main/java/org/apache/calcite/rex/RexSimplify.java [2369:2418]
private static boolean canRollUp(TimeUnit outer, TimeUnit inner) {
// Special handling for QUARTER as it is not in the expected
// order in TimeUnit
switch (outer) {
case YEAR:
case MONTH:
case DAY:
case HOUR:
case MINUTE:
case SECOND:
case MILLISECOND:
case MICROSECOND:
switch (inner) {
case YEAR:
case QUARTER:
case MONTH:
case DAY:
case HOUR:
case MINUTE:
case SECOND:
case MILLISECOND:
case MICROSECOND:
if (inner == TimeUnit.QUARTER) {
return outer == TimeUnit.YEAR;
}
return outer.ordinal() <= inner.ordinal();
default:
break;
}
break;
case QUARTER:
switch (inner) {
case QUARTER:
case MONTH:
case DAY:
case HOUR:
case MINUTE:
case SECOND:
case MILLISECOND:
case MICROSECOND:
return true;
default:
break;
}
break;
default:
break;
}
return false;
}