public Optional visit()

in flink-connector-jdbc/src/main/java/org/apache/flink/connector/jdbc/table/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();
        }
    }