in kyuubi-hive-jdbc/src/main/java/org/apache/kyuubi/jdbc/hive/JdbcColumn.java [298:355]
static int columnPrecision(TTypeId tType, JdbcColumnAttributes columnAttributes)
throws SQLException {
int columnType = convertTTypeIdToSqlType(tType);
// according to hiveTypeToSqlType possible options are:
switch (columnType) {
case NULL:
return 0;
case BOOLEAN:
return 1;
case CHAR:
case VARCHAR:
if (columnAttributes != null) {
return columnAttributes.precision;
}
return Integer.MAX_VALUE; // hive has no max limit for strings
case BINARY:
return Integer.MAX_VALUE; // hive has no max limit for binary
case TINYINT:
return 3;
case SMALLINT:
return 5;
case INTEGER:
return 10;
case BIGINT:
return 19;
case FLOAT:
return 7;
case DOUBLE:
return 15;
case DATE:
return 10;
case TIMESTAMP:
return 29;
case TIMESTAMP_WITH_TIMEZONE:
return 31;
case DECIMAL:
return columnAttributes.precision;
case OTHER:
case JAVA_OBJECT:
{
switch (tType) {
case INTERVAL_YEAR_MONTH_TYPE:
// -yyyyyyy-mm : should be more than enough
return 11;
case INTERVAL_DAY_TIME_TYPE:
// -ddddddddd hh:mm:ss.nnnnnnnnn
return 29;
default:
return Integer.MAX_VALUE;
}
}
case ARRAY:
case STRUCT:
return Integer.MAX_VALUE;
default:
throw new KyuubiSQLException("Invalid column type: " + columnType);
}
}