Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
0004031: Oracle Numeric types used to return DECIMAL, but now returns
NUMERIC with new driver
  • Loading branch information
philipmarzullo64 committed Jul 2, 2019
1 parent 89579b6 commit 6de0c7d
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 9 deletions.
Expand Up @@ -69,27 +69,27 @@ public OracleDdlBuilder() {
// Note that the back-mappings are partially done by the model reader,
// not the driver
databaseInfo.addNativeTypeMapping(Types.ARRAY, "BLOB", Types.BLOB);
databaseInfo.addNativeTypeMapping(Types.BIGINT, "NUMBER(38)");
databaseInfo.addNativeTypeMapping(Types.BIGINT, "NUMBER(38)", Types.NUMERIC);
databaseInfo.addNativeTypeMapping(Types.BINARY, "RAW", Types.VARBINARY);
databaseInfo.addNativeTypeMapping(Types.BIT, "NUMBER(1)", Types.DECIMAL);
databaseInfo.addNativeTypeMapping(Types.BIT, "NUMBER(1)", Types.NUMERIC);
databaseInfo.addNativeTypeMapping(Types.DATE, "DATE", Types.TIMESTAMP);
databaseInfo.addNativeTypeMapping(Types.DECIMAL, "NUMBER");
databaseInfo.addNativeTypeMapping(Types.DECIMAL, "NUMBER", Types.NUMERIC);
databaseInfo.addNativeTypeMapping(Types.DISTINCT, "BLOB", Types.BLOB);
databaseInfo.addNativeTypeMapping(Types.DOUBLE, "DOUBLE PRECISION");
databaseInfo.addNativeTypeMapping(Types.FLOAT, "FLOAT", Types.DOUBLE);
databaseInfo.addNativeTypeMapping(Types.JAVA_OBJECT, "BLOB", Types.BLOB);
databaseInfo.addNativeTypeMapping(Types.LONGVARBINARY, "BLOB", Types.BLOB);
databaseInfo.addNativeTypeMapping(Types.LONGVARCHAR, "CLOB", Types.CLOB);
databaseInfo.addNativeTypeMapping(Types.NULL, "BLOB", Types.BLOB);
databaseInfo.addNativeTypeMapping(Types.NUMERIC, "NUMBER", Types.DECIMAL);
databaseInfo.addNativeTypeMapping(Types.INTEGER, "NUMBER(22)", Types.DECIMAL);
databaseInfo.addNativeTypeMapping(Types.NUMERIC, "NUMBER", Types.NUMERIC);
databaseInfo.addNativeTypeMapping(Types.INTEGER, "NUMBER(22)", Types.NUMERIC);
databaseInfo.addNativeTypeMapping(Types.OTHER, "BLOB", Types.BLOB);
databaseInfo.addNativeTypeMapping(Types.REF, "BLOB", Types.BLOB);
databaseInfo.addNativeTypeMapping(Types.SMALLINT, "NUMBER(5)");
databaseInfo.addNativeTypeMapping(Types.SMALLINT, "NUMBER(5)", Types.NUMERIC);
databaseInfo.addNativeTypeMapping(Types.STRUCT, "BLOB", Types.BLOB);
databaseInfo.addNativeTypeMapping(Types.TIME, "DATE", Types.DATE);
databaseInfo.addNativeTypeMapping(Types.TIMESTAMP, "TIMESTAMP");
databaseInfo.addNativeTypeMapping(Types.TINYINT, "NUMBER(3)", Types.DECIMAL);
databaseInfo.addNativeTypeMapping(Types.TINYINT, "NUMBER(3)", Types.NUMERIC);
databaseInfo.addNativeTypeMapping(Types.VARBINARY, "RAW");
databaseInfo.addNativeTypeMapping(Types.VARCHAR, "VARCHAR2");
databaseInfo.addNativeTypeMapping("BOOLEAN", "NUMBER(1)", "BIT");
Expand Down
Expand Up @@ -168,10 +168,11 @@ protected Integer mapUnknownJdbcTypeForColumn(Map<String, Object> values) {
protected Column readColumn(DatabaseMetaDataWrapper metaData, Map<String, Object> values)
throws SQLException {
Column column = super.readColumn(metaData, values);
if (column.getMappedTypeCode() == Types.DECIMAL) {
if (column.getMappedTypeCode() == Types.DECIMAL || column.getMappedTypeCode() == Types.NUMERIC) {
// We're back-mapping the NUMBER columns returned by Oracle
// Note that the JDBC driver returns DECIMAL for these NUMBER
// columns
// columns for driver version 11 and before, but returns
// NUMERIC for driver version 12 and later.
if (column.getScale() <= -127 || column.getScale() >= 127) {
if (column.getSizeAsInt() == 0) {
/*
Expand All @@ -190,6 +191,9 @@ protected Column readColumn(DatabaseMetaDataWrapper metaData, Map<String, Object
} else {
column.setMappedTypeCode(Types.DOUBLE);
}
} else {
// Let's map DECIMAL to NUMERIC since DECIMAL doesn't really exist in Oracle
column.setMappedTypeCode(Types.NUMERIC);
}
} else if (column.getMappedTypeCode() == Types.FLOAT) {
// Same for REAL, FLOAT, DOUBLE PRECISION, which all back-map to
Expand Down

0 comments on commit 6de0c7d

Please sign in to comment.