in asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBMetaStatement.java [491:554]
protected ADBResultSet executeGetTypeInfoQuery() throws SQLException {
checkClosed();
AbstractValueSerializer int16Ser = getADMFormatSerializer(Short.class);
AbstractValueSerializer int32Ser = getADMFormatSerializer(Integer.class);
AbstractValueSerializer stringSer = getADMFormatSerializer(String.class);
List<ADBColumn> columns = new ArrayList<>();
columns.add(new ADBColumn("TYPE_NAME", ADBDatatype.STRING, false));
columns.add(new ADBColumn("DATA_TYPE", ADBDatatype.INTEGER, false));
columns.add(new ADBColumn("PRECISION", ADBDatatype.INTEGER, true));
columns.add(new ADBColumn("LITERAL_PREFIX", ADBDatatype.STRING, true));
columns.add(new ADBColumn("LITERAL_SUFFIX", ADBDatatype.STRING, true));
columns.add(new ADBColumn("CREATE_PARAMS", ADBDatatype.STRING, true));
columns.add(new ADBColumn("NULLABLE", ADBDatatype.SMALLINT, true));
columns.add(new ADBColumn("CASE_SENSITIVE", ADBDatatype.BOOLEAN, true));
columns.add(new ADBColumn("SEARCHABLE", ADBDatatype.SMALLINT, true));
columns.add(new ADBColumn("UNSIGNED_ATTRIBUTE", ADBDatatype.BOOLEAN, true));
columns.add(new ADBColumn("FIXED_PREC_SCALE", ADBDatatype.BOOLEAN, true));
columns.add(new ADBColumn("AUTO_INCREMENT", ADBDatatype.BOOLEAN, true));
columns.add(new ADBColumn("LOCAL_TYPE_NAME", ADBDatatype.STRING, true));
columns.add(new ADBColumn("MINIMUM_SCALE", ADBDatatype.SMALLINT, true));
columns.add(new ADBColumn("MAXIMUM_SCALE", ADBDatatype.SMALLINT, true));
columns.add(new ADBColumn("SQL_DATA_TYPE", ADBDatatype.INTEGER, true));
columns.add(new ADBColumn("SQL_DATETIME_SUB", ADBDatatype.INTEGER, true));
columns.add(new ADBColumn("NUM_PREC_RADIX", ADBDatatype.INTEGER, true));
ArrayNode result =
(ArrayNode) connection.protocol.getDriverContext().getGenericObjectReader().createArrayNode();
populateTypeInfo(result.addObject(), ADBDatatype.BOOLEAN, 1, null, null, null, null, null, null, int16Ser,
int32Ser, stringSer);
populateTypeInfo(result.addObject(), ADBDatatype.TINYINT, 3, 10, 0, 0, false, null, null, int16Ser, int32Ser,
stringSer);
populateTypeInfo(result.addObject(), ADBDatatype.SMALLINT, 5, 10, 0, 0, false, null, null, int16Ser, int32Ser,
stringSer);
populateTypeInfo(result.addObject(), ADBDatatype.INTEGER, 10, 10, 0, 0, false, null, null, int16Ser, int32Ser,
stringSer);
populateTypeInfo(result.addObject(), ADBDatatype.BIGINT, 19, 10, 0, 0, false, null, null, int16Ser, int32Ser,
stringSer);
populateTypeInfo(result.addObject(), ADBDatatype.FLOAT, 7, 2, 0, 0, false, null, null, int16Ser, int32Ser,
stringSer);
populateTypeInfo(result.addObject(), ADBDatatype.DOUBLE, 15, 2, 0, 0, false, null, null, int16Ser, int32Ser,
stringSer);
populateTypeInfo(result.addObject(), ADBDatatype.DATE, 32, null, 0, 0, false, null, null, int16Ser, int32Ser,
stringSer); // TODO:precision
populateTypeInfo(result.addObject(), ADBDatatype.TIME, 32, null, 0, 0, false, null, null, int16Ser, int32Ser,
stringSer); // TODO:precision
populateTypeInfo(result.addObject(), ADBDatatype.DATETIME, 32, null, 0, 0, false, null, null, int16Ser,
int32Ser, stringSer); // TODO:precision
populateTypeInfo(result.addObject(), ADBDatatype.YEARMONTHDURATION, 32, null, 0, 0, false, null, null, int16Ser,
int32Ser, stringSer); // TODO:precision
populateTypeInfo(result.addObject(), ADBDatatype.DAYTIMEDURATION, 32, null, 0, 0, false, null, null, int16Ser,
int32Ser, stringSer); // TODO:precision
populateTypeInfo(result.addObject(), ADBDatatype.DURATION, 32, null, 0, 0, false, null, null, int16Ser,
int32Ser, stringSer); // TODO:precision
populateTypeInfo(result.addObject(), ADBDatatype.STRING, 32767, null, null, null, true, "'", "'", int16Ser,
int32Ser, stringSer);
populateTypeInfo(result.addObject(), ADBDatatype.ARRAY, 32767, null, 0, 0, false, null, null, int16Ser,
int32Ser, stringSer);
populateTypeInfo(result.addObject(), ADBDatatype.OBJECT, 32767, null, 0, 0, false, null, null, int16Ser,
int32Ser, stringSer);
return createSystemResultSet(columns, result);
}