private Projection createSimpleValueProjection()

in athena-federation-sdk/src/main/java/com/amazonaws/athena/connector/lambda/data/projectors/ArrowValueProjectorImpl.java [56:109]


    private Projection createSimpleValueProjection(Types.MinorType minorType)
    {
        switch (minorType) {
            case DATEMILLI:
                return (fieldReader) -> {
                    if (Objects.isNull(fieldReader.readLocalDateTime())) {
                        return null;
                    }
                    long millis = fieldReader.readLocalDateTime().toDateTime(org.joda.time.DateTimeZone.UTC).getMillis();
                    return Instant.ofEpochMilli(millis).atZone(BlockUtils.UTC_ZONE_ID).toLocalDateTime();
                };
            case TINYINT:
            case UINT1:
                return (fieldReader) -> fieldReader.readByte();
            case UINT2:
                return (fieldReader) -> fieldReader.readCharacter();
            case SMALLINT:
                return (fieldReader) -> fieldReader.readShort();
            case DATEDAY:
                return (fieldReader) -> {
                    Integer intVal = fieldReader.readInteger();
                    if (Objects.isNull(intVal)) {
                        return null;
                    }
                    return LocalDate.ofEpochDay(intVal);
                };
            case INT:
            case UINT4:
                return (fieldReader) -> fieldReader.readInteger();
            case UINT8:
            case BIGINT:
                return (fieldReader) -> fieldReader.readLong();
            case DECIMAL:
                return (fieldReader) -> fieldReader.readBigDecimal();
            case FLOAT4:
                return (fieldReader) -> fieldReader.readFloat();
            case FLOAT8:
                return (fieldReader) -> fieldReader.readDouble();
            case VARCHAR:
                return (fieldReader) -> {
                    Text text = fieldReader.readText();
                    if (Objects.isNull(text)) {
                        return null;
                    }
                    return text.toString();
                };
            case VARBINARY:
                return (fieldReader) -> fieldReader.readByteArray();
            case BIT:
                return (fieldReader) -> fieldReader.readBoolean();
            default:
                throw new IllegalArgumentException("Unsupported type " + minorType);
        }
    }