private Object readPrimitiveTypedRow()

in paimon-format/src/main/java/org/apache/paimon/format/parquet/reader/ArrayColumnReader.java [141:194]


    private Object readPrimitiveTypedRow(DataType type) {
        switch (type.getTypeRoot()) {
            case CHAR:
            case VARCHAR:
            case BINARY:
            case VARBINARY:
                return dataColumn.readBytes();
            case BOOLEAN:
                return dataColumn.readBoolean();
            case TIME_WITHOUT_TIME_ZONE:
            case DATE:
            case INTEGER:
                return dataColumn.readInteger();
            case TINYINT:
                return dataColumn.readTinyInt();
            case SMALLINT:
                return dataColumn.readSmallInt();
            case BIGINT:
                return dataColumn.readLong();
            case FLOAT:
                return dataColumn.readFloat();
            case DOUBLE:
                return dataColumn.readDouble();
            case DECIMAL:
                switch (descriptor.getPrimitiveType().getPrimitiveTypeName()) {
                    case INT32:
                        return dataColumn.readInteger();
                    case INT64:
                        return dataColumn.readLong();
                    case BINARY:
                    case FIXED_LEN_BYTE_ARRAY:
                        return dataColumn.readBytes();
                }
            case TIMESTAMP_WITHOUT_TIME_ZONE:
            case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
                int precision;
                if (type.getTypeRoot() == TIMESTAMP_WITHOUT_TIME_ZONE) {
                    precision = ((TimestampType) type).getPrecision();
                } else {
                    precision = ((LocalZonedTimestampType) type).getPrecision();
                }

                if (precision <= 3) {
                    return dataColumn.readMillsTimestamp();
                } else if (precision <= 6) {
                    return dataColumn.readMicrosTimestamp();
                } else {
                    throw new RuntimeException(
                            "Unsupported precision of time type in the list: " + precision);
                }
            default:
                throw new RuntimeException("Unsupported type in the list: " + type);
        }
    }