in common/src/main/java/org/apache/comet/parquet/ConstantColumnReader.java [85:126]
private void init(Object value) {
if (value == null) {
Native.setNull(nativeHandle);
isNull = true;
} else if (type == DataTypes.BooleanType) {
Native.setBoolean(nativeHandle, (boolean) value);
} else if (type == DataTypes.ByteType) {
Native.setByte(nativeHandle, (byte) value);
} else if (type == DataTypes.ShortType) {
Native.setShort(nativeHandle, (short) value);
} else if (type == DataTypes.IntegerType) {
Native.setInt(nativeHandle, (int) value);
} else if (type == DataTypes.LongType) {
Native.setLong(nativeHandle, (long) value);
} else if (type == DataTypes.FloatType) {
Native.setFloat(nativeHandle, (float) value);
} else if (type == DataTypes.DoubleType) {
Native.setDouble(nativeHandle, (double) value);
} else if (type == DataTypes.BinaryType) {
Native.setBinary(nativeHandle, (byte[]) value);
} else if (type == DataTypes.StringType) {
Native.setBinary(nativeHandle, ((UTF8String) value).getBytes());
} else if (type == DataTypes.DateType) {
Native.setInt(nativeHandle, (int) value);
} else if (type == DataTypes.TimestampType || type == TimestampNTZType$.MODULE$) {
Native.setLong(nativeHandle, (long) value);
} else if (type instanceof DecimalType) {
DecimalType dt = (DecimalType) type;
Decimal d = (Decimal) value;
if (!useDecimal128 && dt.precision() <= Decimal.MAX_INT_DIGITS()) {
Native.setInt(nativeHandle, ((int) d.toUnscaledLong()));
} else if (!useDecimal128 && dt.precision() <= Decimal.MAX_LONG_DIGITS()) {
Native.setLong(nativeHandle, d.toUnscaledLong());
} else {
final BigInteger integer = d.toJavaBigDecimal().unscaledValue();
byte[] bytes = integer.toByteArray();
Native.setDecimal(nativeHandle, bytes);
}
} else {
throw new UnsupportedOperationException("Unsupported Spark type: " + type);
}
}