Skip to content

Commit

Permalink
[improve][lib][rdbms] Handle unknown or unsupported types as strings …
Browse files Browse the repository at this point in the history
…to improve support for various data types
  • Loading branch information
wgzhao committed Sep 19, 2024
1 parent ceefb94 commit 8d38bda
Showing 1 changed file with 7 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@
import com.wgzhao.addax.rdbms.reader.util.ReaderSplitUtil;
import com.wgzhao.addax.rdbms.reader.util.SingleTableSplitUtil;
import com.wgzhao.addax.rdbms.util.DBUtil;
import com.wgzhao.addax.rdbms.util.DBUtilErrorCode;
import com.wgzhao.addax.rdbms.util.DataBaseType;
import com.wgzhao.addax.rdbms.util.RdbmsException;
import org.apache.commons.lang3.StringUtils;
Expand Down Expand Up @@ -330,32 +329,20 @@ protected Column createColumn(ResultSet rs, ResultSetMetaData metaData, int i)
return new BytesColumn(rs.getBytes(i));
}

case Types.NULL:
String stringData = null;
if (rs.getObject(i) != null) {
stringData = rs.getObject(i).toString();
}
return new StringColumn(stringData);

case Types.ARRAY:
return new StringColumn(rs.getArray(i).toString());

case Types.JAVA_OBJECT:

case Types.OTHER:
return new StringColumn(rs.getObject(i).toString());

case Types.SQLXML:
return new StringColumn(rs.getSQLXML(i).getString());

default:
throw AddaxException.asAddaxException(DBUtilErrorCode.UNSUPPORTED_TYPE,
String.format("The column configuration is incorrect, The database does not support reading this field type."
+ "Field name:[%s], Field type:[%s], "
+ "Field typename:[%s], Field java type:[%s]. Please try using database " +
"functions to convert it to a supported type or ignore the field.",
metaData.getColumnName(i), metaData.getColumnType(i),
metaData.getColumnTypeName(i), metaData.getColumnClassName(i)));
// use object as default data type for all unknown datatype
LOG.debug("Unknown data type: {} at field name: {}, using getObject().", metaData.getColumnType(i), metaData.getColumnName(i));
String stringData = null;
if (rs.getObject(i) != null) {
stringData = rs.getObject(i).toString();
}
return new StringColumn(stringData);
}
}

Expand Down

0 comments on commit 8d38bda

Please sign in to comment.