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);
}
}