private Object convert()

in hologres-connector-flink-base/src/main/java/com/alibaba/ververica/connectors/hologres/source/bulkread/HologresBulkReader.java [125:195]


    private Object convert(DataType dataType, ResultSet resultSet, int resultSetIndex)
            throws SQLException {
        if (resultSet.getObject(resultSetIndex) == null) {
            return null;
        }
        switch (dataType.getLogicalType().getTypeRoot()) {
            case BINARY:
            case VARBINARY:
                return resultSet.getBytes(resultSetIndex);
            case CHAR:
            case VARCHAR:
                return StringData.fromString(resultSet.getString(resultSetIndex));
            case TINYINT:
                return resultSet.getByte(resultSetIndex);
            case SMALLINT:
                return resultSet.getShort(resultSetIndex);
            case INTEGER:
                return resultSet.getInt(resultSetIndex);
            case BIGINT:
                return resultSet.getLong(resultSetIndex);
            case FLOAT:
                return resultSet.getFloat(resultSetIndex);
            case DOUBLE:
                return resultSet.getDouble(resultSetIndex);
            case BOOLEAN:
                return resultSet.getBoolean(resultSetIndex);
            case DECIMAL:
                DecimalType logicalType = (DecimalType) dataType.getLogicalType();
                return DecimalData.fromBigDecimal(
                        resultSet.getBigDecimal(resultSetIndex),
                        logicalType.getPrecision(),
                        logicalType.getScale());
            case TIMESTAMP_WITHOUT_TIME_ZONE:
                return TimestampData.fromTimestamp(resultSet.getTimestamp(resultSetIndex));
            case TIME_WITHOUT_TIME_ZONE:
                return (int)
                        (resultSet.getTime(resultSetIndex).toLocalTime().toNanoOfDay()
                                / 1_000_000L);
            case DATE:
                return (int) resultSet.getDate(resultSetIndex).toLocalDate().toEpochDay();
            case ARRAY:
                switch (dataType.getLogicalType().getChildren().get(0).getTypeRoot()) {
                    case BIGINT:
                        return new GenericArrayData(
                                (Long[]) resultSet.getArray(resultSetIndex).getArray());
                    case INTEGER:
                        return new GenericArrayData(
                                (Integer[]) resultSet.getArray(resultSetIndex).getArray());
                    case FLOAT:
                        return new GenericArrayData(
                                (Float[]) resultSet.getArray(resultSetIndex).getArray());
                    case DOUBLE:
                        return new GenericArrayData(
                                (Double[]) resultSet.getArray(resultSetIndex).getArray());
                    case BOOLEAN:
                        return new GenericArrayData(
                                (Boolean[]) resultSet.getArray(resultSetIndex).getArray());
                    case VARCHAR:
                        String[] values = (String[]) resultSet.getArray(resultSetIndex).getArray();
                        StringData[] arrStringObject = new StringData[values.length];
                        for (int i = 0; i < values.length; ++i) {
                            arrStringObject[i] = StringData.fromString(values[i]);
                        }
                        return new GenericArrayData(arrStringObject);
                    default:
                        throw new IllegalArgumentException("Unknown hologres type: " + dataType);
                }
            default:
                throw new IllegalArgumentException("Unknown hologres type: " + dataType);
        }
    }