This is an automated email from the ASF dual-hosted git repository. struberg pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/openjpa.git
commit 8e18fdbbbc29f39764f969168dcec58583721f39 Author: Mark Struberg <strub...@apache.org> AuthorDate: Sun May 2 22:23:50 2021 +0200 OPENJPA-2865 add compat check for WITH_TIMEZONE cols --- .../org/apache/openjpa/jdbc/meta/MappingInfo.java | 4 ++-- .../java/org/apache/openjpa/jdbc/schema/Column.java | 19 +++++++++++++++++++ .../openjpa/jdbc/schema/DynamicSchemaFactory.java | 3 +-- 3 files changed, 22 insertions(+), 4 deletions(-) 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 @@ public abstract class MappingInfo implements Serializable { 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 @@ public class Column extends ReferenceCounter { 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 @@ public class DynamicSchemaFactory } @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);