public static Block singleValueToBlock()

in paimon-presto-common/src/main/java/org/apache/paimon/presto/PrestoTypeUtils.java [236:287]


    public static Block singleValueToBlock(Type prestoType, Object value) {
        if (value == null) {
            return null;
        }
        BlockBuilder output = prestoType.createBlockBuilder(null, 1);
        Class<?> javaType = prestoType.getJavaType();
        if (javaType == boolean.class) {
            prestoType.writeBoolean(output, (Boolean) value);
        } else if (javaType == long.class) {
            if (prestoType.equals(BIGINT)
                    || prestoType.equals(INTEGER)
                    || prestoType.equals(TINYINT)
                    || prestoType.equals(SMALLINT)
                    || prestoType.equals(DATE)) {
                prestoType.writeLong(output, ((Number) value).longValue());
            } else if (prestoType.equals(REAL)) {
                prestoType.writeLong(output, Float.floatToIntBits((Float) value));
            } else if (prestoType instanceof com.facebook.presto.common.type.DecimalType) {
                Verify.verify(isShortDecimal(prestoType), "The type should be short decimal");
                com.facebook.presto.common.type.DecimalType decimalType =
                        (com.facebook.presto.common.type.DecimalType) prestoType;
                BigDecimal decimal = ((Decimal) value).toBigDecimal();
                prestoType.writeLong(
                        output, encodeShortScaledValue(decimal, decimalType.getScale()));
            } else if (prestoType.equals(TIMESTAMP)) {
                prestoType.writeLong(
                        output,
                        ((Timestamp) value)
                                .toLocalDateTime()
                                .atZone(ZoneId.systemDefault())
                                .toInstant()
                                .toEpochMilli());
            } else if (prestoType.equals(TIME)) {
                prestoType.writeLong(output, (int) value * 1_000);
            } else {
                throw new PrestoException(
                        GENERIC_INTERNAL_ERROR,
                        format("Unhandled type for %s: %s", javaType.getSimpleName(), prestoType));
            }
        } else if (javaType == double.class) {
            prestoType.writeDouble(output, ((Number) value).doubleValue());
        } else if (prestoType instanceof com.facebook.presto.common.type.DecimalType) {
            writeObject(output, prestoType, value);
        } else if (javaType == Slice.class) {
            writeSlice(output, prestoType, value);
        } else {
            throw new PrestoException(
                    GENERIC_INTERNAL_ERROR,
                    format("Unhandled type for %s: %s", javaType.getSimpleName(), prestoType));
        }
        return output.build();
    }