in wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/calcite/converter/WayangFilterVisitor.java [103:130]
public boolean eval(Record record, SqlKind kind, RexNode leftOperand, RexNode rightOperand) {
if(leftOperand instanceof RexInputRef && rightOperand instanceof RexLiteral) {
RexInputRef rexInputRef = (RexInputRef)leftOperand;
int index = rexInputRef.getIndex();
Object field = record.getField(index);
RexLiteral rexLiteral = (RexLiteral) rightOperand;
switch (kind) {
case GREATER_THAN:
return isGreaterThan(field, rexLiteral);
case LESS_THAN:
return isLessThan(field, rexLiteral);
case EQUALS:
return isEqualTo(field, rexLiteral);
case GREATER_THAN_OR_EQUAL:
return isGreaterThan(field, rexLiteral) || isEqualTo(field, rexLiteral);
case LESS_THAN_OR_EQUAL:
return isLessThan(field, rexLiteral) || isEqualTo(field, rexLiteral);
default:
throw new IllegalStateException("Predicate not supported yet");
}
} else {
throw new IllegalStateException("Predicate not supported yet");
}
}