OPENJPA-2865 add compat check for WITH_TIMEZONE cols
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java
index a9a80f1..c2ebe98 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java
@@ -770,8 +770,8 @@
if (col == null) {
col = table.addColumn(colName);
col.setType(type);
- } else if ((compat || !ttype) && !col.isCompatible(type, typeName,
- size, decimals)) {
+ } else if ((compat || !ttype) &&
+ !col.isCompatible(type, typeName, size, decimals)) {
// if existing column isn't compatible with desired type, die if
// can't adapt, else warn and change the existing column type
Message msg = _loc.get(prefix + "-bad-col", context,
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Column.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Column.java
index b63c82e..6253808 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Column.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Column.java
@@ -762,10 +762,29 @@
case Types.DATE:
case Types.TIME:
case Types.TIMESTAMP:
+ case Types.TIMESTAMP_WITH_TIMEZONE:
return true;
default:
return false;
}
+ case Types.TIMESTAMP_WITH_TIMEZONE:
+ switch (type) {
+ case Types.DATE:
+ case Types.TIMESTAMP:
+ return true;
+ default:
+ return false;
+ }
+ case Types.TIME_WITH_TIMEZONE:
+ switch (type) {
+ case Types.DATE:
+ case Types.TIME:
+ case Types.TIMESTAMP:
+ return true;
+ default:
+ return false;
+ }
+
case Types.SQLXML: // All XML Types
case 2007: // Oracle-defined opaque type code for XMLType treated the same way
switch (type) {
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DynamicSchemaFactory.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DynamicSchemaFactory.java
index d0e3129..2a29eac 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DynamicSchemaFactory.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DynamicSchemaFactory.java
@@ -240,8 +240,7 @@
}
@Override
- public boolean isCompatible(int type, String typeName, int size,
- int decimals) {
+ public boolean isCompatible(int type, String typeName, int size, int decimals) {
if (getType() != Types.OTHER)
return super.isCompatible(type, typeName, size, decimals);