public ResultSet getTypeInfo()

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