diff --git a/symmetric-db/src/main/java/org/jumpmind/db/platform/oracle/OracleDdlBuilder.java b/symmetric-db/src/main/java/org/jumpmind/db/platform/oracle/OracleDdlBuilder.java index 0175489f95..6556c603b5 100644 --- a/symmetric-db/src/main/java/org/jumpmind/db/platform/oracle/OracleDdlBuilder.java +++ b/symmetric-db/src/main/java/org/jumpmind/db/platform/oracle/OracleDdlBuilder.java @@ -69,11 +69,11 @@ 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); @@ -81,15 +81,15 @@ public OracleDdlBuilder() { 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"); diff --git a/symmetric-jdbc/src/main/java/org/jumpmind/db/platform/oracle/OracleDdlReader.java b/symmetric-jdbc/src/main/java/org/jumpmind/db/platform/oracle/OracleDdlReader.java index cb3e689c55..d80d593d6f 100644 --- a/symmetric-jdbc/src/main/java/org/jumpmind/db/platform/oracle/OracleDdlReader.java +++ b/symmetric-jdbc/src/main/java/org/jumpmind/db/platform/oracle/OracleDdlReader.java @@ -168,10 +168,11 @@ protected Integer mapUnknownJdbcTypeForColumn(Map values) { protected Column readColumn(DatabaseMetaDataWrapper metaData, Map 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) { /* @@ -190,6 +191,9 @@ protected Column readColumn(DatabaseMetaDataWrapper metaData, Map