in paimon-common/src/main/java/org/apache/paimon/utils/InternalRowUtils.java [285:334]
public static Object get(DataGetters dataGetters, int pos, DataType fieldType) {
if (dataGetters.isNullAt(pos)) {
return null;
}
switch (fieldType.getTypeRoot()) {
case BOOLEAN:
return dataGetters.getBoolean(pos);
case TINYINT:
return dataGetters.getByte(pos);
case SMALLINT:
return dataGetters.getShort(pos);
case INTEGER:
case DATE:
case TIME_WITHOUT_TIME_ZONE:
return dataGetters.getInt(pos);
case BIGINT:
return dataGetters.getLong(pos);
case TIMESTAMP_WITHOUT_TIME_ZONE:
TimestampType timestampType = (TimestampType) fieldType;
return dataGetters.getTimestamp(pos, timestampType.getPrecision());
case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
LocalZonedTimestampType lzTs = (LocalZonedTimestampType) fieldType;
return dataGetters.getTimestamp(pos, lzTs.getPrecision());
case FLOAT:
return dataGetters.getFloat(pos);
case DOUBLE:
return dataGetters.getDouble(pos);
case CHAR:
case VARCHAR:
return dataGetters.getString(pos);
case DECIMAL:
DecimalType decimalType = (DecimalType) fieldType;
return dataGetters.getDecimal(
pos, decimalType.getPrecision(), decimalType.getScale());
case ARRAY:
return dataGetters.getArray(pos);
case MAP:
case MULTISET:
return dataGetters.getMap(pos);
case ROW:
return dataGetters.getRow(pos, ((RowType) fieldType).getFieldCount());
case BINARY:
case VARBINARY:
return dataGetters.getBinary(pos);
case VARIANT:
return dataGetters.getVariant(pos);
default:
throw new UnsupportedOperationException("Unsupported type: " + fieldType);
}
}