private RelDataType getRelDataType(
Connection connection,
String catalogName,
String schemaName,
String tableName) throws SQLException {
DatabaseMetaData metaData = connection.getMetaData();
final ResultSet resultSet =
metaData.getColumns(catalogName, schemaName, tableName, null);
final RelDataTypeFactory.FieldInfoBuilder fieldInfo =
new RelDataTypeFactory.FieldInfoBuilder();
while (resultSet.next()) {
final String columnName = resultSet.getString(4);
final int dataType = resultSet.getInt(5);
final int size = resultSet.getInt(7);
final int scale = resultSet.getInt(9);
RelDataType sqlType = zzz(dataType, size, scale);
boolean nullable = resultSet.getBoolean(11);
if (nullable) {
sqlType =
typeFactory.createTypeWithNullability(sqlType, true);
}
fieldInfo.add(columnName, sqlType);
}
resultSet.close();
return typeFactory.createStructType(fieldInfo);
}