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;
}