in common/src/main/java/org/apache/drill/common/types/Types.java [355:422]
public static boolean isJdbcSignedType( final MajorType type ) {
final boolean isSigned;
switch ( type.getMode() ) {
case REPEATED:
isSigned = false; // SQL ARRAY
break;
case REQUIRED:
case OPTIONAL:
switch ( type.getMinorType() ) {
// Verified signed types:
case SMALLINT:
case INT: // SQL INTEGER
case BIGINT:
case FLOAT4: // SQL REAL / FLOAT(N)
case FLOAT8: // SQL DOUBLE PRECISION / FLOAT(N)
case INTERVALYEAR: // SQL INTERVAL w/YEAR and/or MONTH
case INTERVALDAY: // SQL INTERVAL w/DAY, HOUR, MINUTE and/or SECOND
// Not-yet seen/verified signed types:
case VARDECIMAL: // SQL DECIMAL (if used)
case DECIMAL9: // SQL DECIMAL (if used)
case DECIMAL18: // SQL DECIMAL (if used)
case DECIMAL28SPARSE: // SQL DECIMAL (if used)
case DECIMAL38SPARSE: // SQL DECIMAL (if used)
case DECIMAL28DENSE: // SQL DECIMAL (if used)
case DECIMAL38DENSE: // SQL DECIMAL (if used)
case TINYINT: // (not standard SQL)
case MONEY: // (not standard SQL)
case INTERVAL: // unknown (given INTERVALYEAR and INTERVALDAY)
isSigned = true;
break;
// Verified unsigned types:
case BIT: // SQL BOOLEAN
case VARCHAR:
case FIXEDCHAR: // SQL CHARACTER
case VARBINARY:
case FIXEDBINARY: // SQL BINARY
case DATE:
case TIME: // SQL TIME WITHOUT TIME ZONE
case TIMESTAMP: // SQL TIMESTAMP WITHOUT TIME ZONE
// Not-yet seen/verified unsigned types:
case UINT1:
case UINT2:
case UINT4:
case UINT8:
case FIXED16CHAR:
case VAR16CHAR:
case GENERIC_OBJECT:
case LATE:
case LIST:
case MAP:
case DICT:
case UNION:
case NULL:
case TIMETZ: // SQL TIME WITH TIME ZONE
case TIMESTAMPTZ: // SQL TIMESTAMP WITH TIME ZONE
isSigned = false;
break;
default:
throw new UnsupportedOperationException(
"Unexpected/unhandled MinorType value " + type.getMinorType() );
}
break;
default:
throw new UnsupportedOperationException(
"Unexpected/unhandled DataMode value " + type.getMode() );
}
return isSigned;
}