in flink-connector-jdbc-core/src/main/java/org/apache/flink/connector/jdbc/core/table/source/JdbcFilterPushdownPreparedStatementVisitor.java [129:191]
public Optional<ParameterizedPredicate> visit(ValueLiteralExpression litExp) {
LogicalType tpe = litExp.getOutputDataType().getLogicalType();
Serializable[] params = new Serializable[1];
ParameterizedPredicate predicate = new ParameterizedPredicate("?");
switch (tpe.getTypeRoot()) {
case CHAR:
params[0] = litExp.getValueAs(String.class).orElse(null);
predicate.setParameters(params);
return Optional.of(predicate);
case VARCHAR:
params[0] = litExp.getValueAs(String.class).orElse(null);
predicate.setParameters(params);
return Optional.of(predicate);
case BOOLEAN:
params[0] = litExp.getValueAs(Boolean.class).orElse(null);
predicate.setParameters(params);
return Optional.of(predicate);
case DECIMAL:
params[0] = litExp.getValueAs(BigDecimal.class).orElse(null);
predicate.setParameters(params);
return Optional.of(predicate);
case TINYINT:
params[0] = litExp.getValueAs(Byte.class).orElse(null);
predicate.setParameters(params);
return Optional.of(predicate);
case SMALLINT:
params[0] = litExp.getValueAs(Short.class).orElse(null);
predicate.setParameters(params);
return Optional.of(predicate);
case INTEGER:
params[0] = litExp.getValueAs(Integer.class).orElse(null);
predicate.setParameters(params);
return Optional.of(predicate);
case BIGINT:
params[0] = litExp.getValueAs(Long.class).orElse(null);
predicate.setParameters(params);
return Optional.of(predicate);
case FLOAT:
params[0] = litExp.getValueAs(Float.class).orElse(null);
predicate.setParameters(params);
return Optional.of(predicate);
case DOUBLE:
params[0] = litExp.getValueAs(Double.class).orElse(null);
predicate.setParameters(params);
return Optional.of(predicate);
case DATE:
params[0] = litExp.getValueAs(LocalDate.class).map(Date::valueOf).orElse(null);
predicate.setParameters(params);
return Optional.of(predicate);
case TIME_WITHOUT_TIME_ZONE:
params[0] = litExp.getValueAs(java.sql.Time.class).orElse(null);
predicate.setParameters(params);
return Optional.of(predicate);
case TIMESTAMP_WITHOUT_TIME_ZONE:
params[0] =
litExp.getValueAs(LocalDateTime.class).map(Timestamp::valueOf).orElse(null);
predicate.setParameters(params);
return Optional.of(predicate);
default:
return Optional.empty();
}
}