From 4bc236faeadd6168bd96e26a3155b5f070892eb4 Mon Sep 17 00:00:00 2001 From: chenson42 Date: Thu, 25 Sep 2014 18:10:21 +0000 Subject: [PATCH] 0001969: Integer conversion between Oracle and PostgreSQL maps to wrong type --- .../org/jumpmind/db/alter/ModelComparator.java | 9 ++++++++- .../db/platform/oracle/OracleDdlReader.java | 17 ++--------------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/symmetric-db/src/main/java/org/jumpmind/db/alter/ModelComparator.java b/symmetric-db/src/main/java/org/jumpmind/db/alter/ModelComparator.java index ca7d0712d1..056910eb7f 100644 --- a/symmetric-db/src/main/java/org/jumpmind/db/alter/ModelComparator.java +++ b/symmetric-db/src/main/java/org/jumpmind/db/alter/ModelComparator.java @@ -19,6 +19,7 @@ * under the License. */ +import java.sql.Types; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -314,7 +315,13 @@ public List compareTables(Database sourceModel, Table sourceTable, public List compareColumns(Table sourceTable, Column sourceColumn, Table targetTable, Column targetColumn) { ArrayList changes = new ArrayList(); - if (targetColumn.getMappedTypeCode() != sourceColumn.getMappedTypeCode() + + int sourceTypeCode = sourceColumn.getMappedTypeCode(); + int targetTypeCode = targetColumn.getMappedTypeCode(); + boolean compatible = + (sourceTypeCode == Types.NUMERIC || sourceTypeCode == Types.DECIMAL) && + (targetTypeCode == Types.INTEGER || targetTypeCode == Types.BIGINT); + if (!compatible && targetColumn.getMappedTypeCode() != sourceColumn.getMappedTypeCode() && platformInfo.getTargetJdbcType(targetColumn.getMappedTypeCode()) != sourceColumn .getMappedTypeCode()) { log.debug( 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 54c32b1872..a28495993b 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 @@ -149,20 +149,7 @@ protected Column readColumn(DatabaseMetaDataWrapper metaData, Map= 127) { + if (column.getScale() <= -127 || column.getScale() >= 127) { if (column.getSizeAsInt() == 0) { /* * Latest oracle jdbc drivers for 11g return (0,-127) for @@ -173,7 +160,7 @@ protected Column readColumn(DatabaseMetaDataWrapper metaData, Map