in pulsar-io/jdbc/core/src/main/java/org/apache/pulsar/io/jdbc/JdbcUtils.java [121:162]
public static TableDefinition getTableDefinition(
Connection connection, TableId tableId, List<String> keyList, List<String> nonKeyList) throws Exception {
TableDefinition table = TableDefinition.of(
tableId, Lists.newArrayList(), Lists.newArrayList(), Lists.newArrayList());
try (ResultSet rs = connection.getMetaData().getColumns(
tableId.getCatalogName(),
tableId.getSchemaName(),
tableId.getTableName(),
null
)) {
while (rs.next()) {
final String columnName = rs.getString(4);
final int sqlDataType = rs.getInt(5);
final String typeName = rs.getString(6);
final int position = rs.getInt(17);
ColumnId columnId = ColumnId.of(tableId, columnName, sqlDataType, typeName, position);
table.columns.add(columnId);
if (keyList != null) {
keyList.forEach((key) -> {
if (key.equals(columnName)) {
table.keyColumns.add(columnId);
}
});
}
if (nonKeyList != null) {
nonKeyList.forEach((key) -> {
if (key.equals(columnName)) {
table.nonKeyColumns.add(columnId);
}
});
}
if (log.isDebugEnabled()) {
log.debug("Get column. name: {}, data type: {}, position: {}", columnName, typeName, position);
}
}
return table;
}
}