in flink-connector-kudu/src/main/java/org/apache/flink/connector/kudu/table/utils/KuduTableUtils.java [196:230]
private static Optional<KuduFilterInfo> convertBinaryComparison(
FunctionDefinition functionDefinition, List<Expression> children) {
FieldReferenceExpression fieldReferenceExpression;
ValueLiteralExpression valueLiteralExpression;
if (isFieldReferenceExpression(children.get(0))
&& isValueLiteralExpression(children.get(1))) {
fieldReferenceExpression = (FieldReferenceExpression) children.get(0);
valueLiteralExpression = (ValueLiteralExpression) children.get(1);
} else if (isValueLiteralExpression(children.get(0))
&& isFieldReferenceExpression(children.get(1))) {
fieldReferenceExpression = (FieldReferenceExpression) children.get(1);
valueLiteralExpression = (ValueLiteralExpression) children.get(0);
} else {
return Optional.empty();
}
String columnName = fieldReferenceExpression.getName();
Object value = extractValueLiteral(fieldReferenceExpression, valueLiteralExpression);
if (value == null) {
return Optional.empty();
}
KuduFilterInfo.Builder builder = KuduFilterInfo.Builder.create(columnName);
// GREATER GREATER_EQUAL EQUAL LESS LESS_EQUAL
if (functionDefinition.equals(BuiltInFunctionDefinitions.GREATER_THAN)) {
return Optional.of(builder.greaterThan(value).build());
} else if (functionDefinition.equals(BuiltInFunctionDefinitions.GREATER_THAN_OR_EQUAL)) {
return Optional.of(builder.greaterOrEqualTo(value).build());
} else if (functionDefinition.equals(BuiltInFunctionDefinitions.EQUALS)) {
return Optional.of(builder.equalTo(value).build());
} else if (functionDefinition.equals(BuiltInFunctionDefinitions.LESS_THAN)) {
return Optional.of(builder.lessThan(value).build());
} else if (functionDefinition.equals(BuiltInFunctionDefinitions.LESS_THAN_OR_EQUAL)) {
return Optional.of(builder.lessOrEqualTo(value).build());
}
return Optional.empty();
}