in src/main/java/com/aliyun/odps/jdbc/OdpsDatabaseMetaData.java [1287:1399]
public ResultSet getTypeInfo() throws SQLException {
List<String> columnNames =
Arrays.asList("TYPE_NAME", "DATA_TYPE", "PRECISION",
"LITERAL_PREFIX", "LITERAL_SUFFIX", "CREATE_PARAMS",
"NULLABLE", "CASE_SENSITIVE", "SEARCHABLE",
"UNSIGNED_ATTRIBUTE", "FIXED_PREC_SCALE", "AUTO_INCREMENT",
"LOCAL_TYPE_NAME", "MINIMUM_SCALE", "MAXIMUM_SCALE",
"SQL_DATA_TYPE", "SQL_DATETIME_SUB", "NUM_PREC_RADIX");
List<TypeInfo> columnTypes =
Arrays.asList(TypeInfoFactory.STRING, TypeInfoFactory.INT, TypeInfoFactory.INT,
TypeInfoFactory.STRING, TypeInfoFactory.STRING, TypeInfoFactory.STRING,
TypeInfoFactory.SMALLINT, TypeInfoFactory.BOOLEAN, TypeInfoFactory.SMALLINT,
TypeInfoFactory.BOOLEAN, TypeInfoFactory.BOOLEAN, TypeInfoFactory.BOOLEAN,
TypeInfoFactory.STRING, TypeInfoFactory.SMALLINT, TypeInfoFactory.SMALLINT,
TypeInfoFactory.INT, TypeInfoFactory.INT, TypeInfoFactory.INT);
OdpsResultSetMetaData meta = new OdpsResultSetMetaData(columnNames, columnTypes);
List<Object[]> rows = new ArrayList<>();
rows.add(new Object[]{TypeInfoFactory.TINYINT.getTypeName(), Types.TINYINT, 3,
null, "Y", null,
typeNullable, null, typePredBasic,
false, false, false,
null, 0, 0,
null, null, 10});
rows.add(new Object[]{TypeInfoFactory.SMALLINT.getTypeName(), Types.SMALLINT, 5,
null, "S", null,
typeNullable, null, typePredBasic,
false, false, false,
null, 0, 0,
null, null, 10});
rows.add(new Object[]{TypeInfoFactory.INT.getTypeName(), Types.INTEGER, 10,
null, null, null,
typeNullable, null, typePredBasic,
false, false, false,
null, 0, 0,
null, null, 10});
rows.add(new Object[]{TypeInfoFactory.BIGINT.getTypeName(), Types.BIGINT, 19,
null, "L", null,
typeNullable, null, typePredBasic,
false, false, false,
null, 0, 0,
null, null, 10});
rows.add(new Object[]{TypeInfoFactory.BINARY.getTypeName(), Types.BINARY, 8 * 1024 * 1024,
null, null, null,
typeNullable, null, typePredNone,
false, false, false,
null, 0, 0,
null, null, null});
rows.add(new Object[]{TypeInfoFactory.FLOAT.getTypeName(), Types.FLOAT, null,
null, null, null,
typeNullable, null, typePredBasic,
false, false, false,
null, null, null,
null, null, 2});
rows.add(new Object[]{TypeInfoFactory.DOUBLE.getTypeName(), Types.DOUBLE, null,
null, null, null,
typeNullable, null, typePredBasic,
false, false, false,
null, null, null,
null, null, 2});
rows.add(new Object[]{TypeInfoFactory.DECIMAL.getTypeName(), Types.DECIMAL, 38,
null, "BD", null,
typeNullable, null, typePredBasic,
false, true, false,
null, 18, 18,
null, null, 10});
rows.add(new Object[]{"VARCHAR", Types.VARCHAR, null,
null, null, "PRECISION",
typeNullable, true, typePredChar,
false, false, false,
null, null, null,
null, null, null});
rows.add(new Object[]{"CHAR", Types.CHAR, null,
null, null, "PRECISION",
typeNullable, true, typePredChar,
false, false, false,
null, null, null,
null, null, null});
rows.add(new Object[]{TypeInfoFactory.STRING, Types.VARCHAR, 8 * 1024 * 1024,
"\"", "\"", null,
typeNullable, true, typePredChar,
false, false, false,
null, null, null,
null, null, null});
// yyyy-mm-dd
rows.add(new Object[]{TypeInfoFactory.DATE, Types.DATE, 10,
"DATE'", "'", null,
typeNullable, null, typePredBasic,
false, false, false,
null, null, null,
null, null, null});
// yyyy-mm-dd hh:MM:ss.SSS
rows.add(new Object[]{TypeInfoFactory.DATETIME, Types.TIMESTAMP, 23,
"DATETIME'", "'", null,
typeNullable, null, typePredBasic,
false, false, false,
null, null, null,
null, null, null});
// yyyy-mm-dd hh:MM:ss.SSSSSSSSS
rows.add(new Object[]{TypeInfoFactory.TIMESTAMP, Types.TIMESTAMP, 29,
"TIMESTAMP'", "'", null,
typeNullable, null, typePredBasic,
false, false, false,
null, null, null,
null, null, null});
rows.add(new Object[]{TypeInfoFactory.BOOLEAN, Types.BOOLEAN, null,
null, null, null,
typeNullable, null, typePredBasic,
false, false, false,
null, null, null,
null, null, null});
return new OdpsStaticResultSet(getConnection(), meta, rows.iterator());
}