private static RecordFieldType getFieldType()

in nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/ResultSetRecordSet.java [457:527]


    private static RecordFieldType getFieldType(final int sqlType, final String valueClassName, final boolean useLogicalTypes) {
        switch (sqlType) {
            case Types.BIGINT:
            case Types.ROWID:
                return RecordFieldType.LONG;
            case Types.BIT:
            case Types.BOOLEAN:
                return RecordFieldType.BOOLEAN;
            case Types.CHAR:
                return RecordFieldType.STRING;
            case Types.DATE:
                return getRecordFieldType(RecordFieldType.DATE, useLogicalTypes);
            case Types.NUMERIC:
            case Types.DECIMAL:
                return getRecordFieldType(RecordFieldType.DECIMAL, useLogicalTypes);
            case Types.DOUBLE:
            case Types.REAL:
                return RecordFieldType.DOUBLE;
            case Types.FLOAT:
                return RecordFieldType.FLOAT;
            case Types.INTEGER:
                return RecordFieldType.INT;
            case Types.SMALLINT:
                return RecordFieldType.SHORT;
            case Types.TINYINT:
                return RecordFieldType.BYTE;
            case Types.LONGNVARCHAR:
            case Types.LONGVARCHAR:
            case Types.NCHAR:
            case Types.NULL:
            case Types.NVARCHAR:
            case Types.VARCHAR:
                return RecordFieldType.STRING;
            case Types.OTHER:
            case Types.JAVA_OBJECT:
                if (STRING_CLASS_NAME.equals(valueClassName)) {
                    return RecordFieldType.STRING;
                }
                if (INT_CLASS_NAME.equals(valueClassName)) {
                    return RecordFieldType.INT;
                }
                if (LONG_CLASS_NAME.equals(valueClassName)) {
                    return RecordFieldType.LONG;
                }
                if (DATE_CLASS_NAME.equals(valueClassName)) {
                    return getRecordFieldType(RecordFieldType.DATE, useLogicalTypes);
                }
                if (FLOAT_CLASS_NAME.equals(valueClassName)) {
                    return RecordFieldType.FLOAT;
                }
                if (DOUBLE_CLASS_NAME.equals(valueClassName)) {
                    return RecordFieldType.DOUBLE;
                }
                if (BIGDECIMAL_CLASS_NAME.equals(valueClassName)) {
                    return getRecordFieldType(RecordFieldType.DECIMAL, useLogicalTypes);
                }

                return RecordFieldType.RECORD;
            case Types.TIME:
            case Types.TIME_WITH_TIMEZONE:
                return getRecordFieldType(RecordFieldType.TIME, useLogicalTypes);
            case Types.TIMESTAMP:
            case Types.TIMESTAMP_WITH_TIMEZONE:
            case -101: // Oracle's TIMESTAMP WITH TIME ZONE
            case -102: // Oracle's TIMESTAMP WITH LOCAL TIME ZONE
            case -155: // SQL Server's DATETIMEOFFSET
                return getRecordFieldType(TIMESTAMP, useLogicalTypes);
        }

        return RecordFieldType.STRING;
    }