return "true".equals(systemProperty);
}
private void loadColumns(JdbcTable table, DatabaseMetaData metaData) {
final boolean convertLobs = isLobConversionEnabled();
final Schema schema = table.getSchema();
ResultSet rs = null;
try {
if (logger.isDebugEnabled()) {
logger.debug("Querying for columns in table: " + table.getName());
}
int columnNumber = -1;
if (_usesCatalogsAsSchemas) {
rs = metaData.getColumns(schema.getName(), null, table.getName(), null);
} else {
rs = metaData.getColumns(_dataContext.getCatalogName(), schema.getName(), table.getName(), null);
}
while (rs.next()) {
columnNumber++;
final String columnName = rs.getString(4);
if (_identifierQuoteString == null && new StringTokenizer(columnName).countTokens() > 1) {
logger.warn("column name contains whitespace: \"" + columnName + "\".");
}
final int jdbcType = rs.getInt(5);
final String nativeType = rs.getString(6);
final Integer columnSize = rs.getInt(7);
if (logger.isDebugEnabled()) {
logger.debug("Found column: table=" + table.getName() + ",columnName=" + columnName
+ ",nativeType=" + nativeType + ",columnSize=" + columnSize);
}
ColumnType columnType = _dataContext.getQueryRewriter().getColumnType(jdbcType, nativeType, columnSize);
if (convertLobs) {
if (columnType == ColumnType.CLOB || columnType == ColumnType.NCLOB) {
columnType = JdbcDataContext.COLUMN_TYPE_CLOB_AS_STRING;
} else if (columnType == ColumnType.BLOB) {
columnType = JdbcDataContext.COLUMN_TYPE_BLOB_AS_BYTES;
}
}
final int jdbcNullable = rs.getInt(11);
final Boolean nullable;
if (jdbcNullable == DatabaseMetaData.columnNullable) {
nullable = true;
} else if (jdbcNullable == DatabaseMetaData.columnNoNulls) {
nullable = false;
} else {
nullable = null;
}
final String remarks = rs.getString(12);
final JdbcColumn column = new JdbcColumn(columnName, columnType, table, columnNumber, nullable);
column.setRemarks(remarks);
column.setNativeType(nativeType);
column.setColumnSize(columnSize);
column.setQuote(_identifierQuoteString);
table.addColumn(column);
}
final int columnsReturned = columnNumber + 1;
if (columnsReturned == 0) {
logger.info("No column metadata records returned for table '{}' in schema '{}'", table.getName(),
schema.getName());
} else {
logger.debug("Returned {} column metadata records for table '{}' in schema '{}'", new Object[] {
columnsReturned, table.getName(), schema.getName() });
}
} catch (SQLException e) {
throw JdbcUtils.wrapException(e, "retrieve table metadata for " + table.getName());
} finally {