in modules/web-agent/src/main/java/org/apache/ignite/console/agent/db/dialect/OracleMetadataDialect.java [170:243]
private int decodeType(ResultSet rs) throws SQLException {
String type = rs.getString(DATA_TYPE_IDX);
if (type.startsWith("TIMESTAMP"))
return TIMESTAMP;
else {
switch (type) {
case "CHAR":
case "NCHAR":
return CHAR;
case "VARCHAR2":
case "NVARCHAR2":
return VARCHAR;
case "LONG":
return LONGVARCHAR;
case "LONG RAW":
return LONGVARBINARY;
case "FLOAT":
return FLOAT;
case "NUMBER":
int precision = rs.getInt(DATA_PRECISION_IDX);
int scale = rs.getInt(DATA_SCALE_IDX);
if (scale > 0) {
if (scale < 4 && precision < 19)
return FLOAT;
if (scale > 4 || precision > 19)
return DOUBLE;
return NUMERIC;
}
else {
if (precision < 1)
return NUMERIC;
if (precision < 3)
return TINYINT;
if (precision < 5)
return SMALLINT;
if (precision < 10)
return INTEGER;
if (precision < 19)
return BIGINT;
return NUMERIC;
}
case "DATE":
return DATE;
case "BFILE":
case "BLOB":
return BLOB;
case "CLOB":
case "NCLOB":
return CLOB;
case "XMLTYPE":
return SQLXML;
}
}
return OTHER;
}