docs: public static String getColumnType(DriverTypeEnum.ConnectionProperties theConnectionProperties, String theTableName, String theColumnName) throws SQLException {
  		DataSource dataSource = Objects.requireNonNull(theConnectionProperties.getDataSource());
  		try (Connection connection = dataSource.getConnection()) {
  			return theConnectionProperties.getTxTemplate().execute(t -> {
  				DatabaseMetaData metadata;
  				try {
  					metadata = connection.getMetaData();
  					String catalog = connection.getCatalog();
  					String schema = connection.getSchema();
  					ResultSet indexes = metadata.getColumns(catalog, schema, massageIdentifier(metadata, theTableName), null);
  
  					while (indexes.next()) {
  
  						String tableName = toUpperCase(indexes.getString("TABLE_NAME"), Locale.US);
  						if (!theTableName.equalsIgnoreCase(tableName)) {
  							continue;
  						}
  						String columnName = toUpperCase(indexes.getString("COLUMN_NAME"), Locale.US);
  						if (!theColumnName.equalsIgnoreCase(columnName)) {
  							continue;
  						}
  
  						int dataType = indexes.getInt("DATA_TYPE");
  						Long length = indexes.getLong("COLUMN_SIZE");
  						switch (dataType) {
  							case Types.VARCHAR:
  								return BaseTableColumnTypeTask.ColumnTypeEnum.STRING.getDescriptor(length);
  							case Types.NUMERIC:
  							case Types.BIGINT:
  							case Types.DECIMAL:
  								return BaseTableColumnTypeTask.ColumnTypeEnum.LONG.getDescriptor(null);
  							case Types.INTEGER:
  								return BaseTableColumnTypeTask.ColumnTypeEnum.INT.getDescriptor(null);
  							case Types.TIMESTAMP:
  							case Types.TIMESTAMP_WITH_TIMEZONE:
  								return BaseTableColumnTypeTask.ColumnTypeEnum.DATE_TIMESTAMP.getDescriptor(null);
  							default:
  								throw new IllegalArgumentException("Don't know how to handle datatype " + dataType + " for column " + theColumnName + " on table " + theTableName);
  						}
  
  					}
  
  					return null;
  
  				} catch (SQLException e) {
  					throw new InternalErrorException(e);
  				}
  
  			});
  		}
  	}