This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/master by this push:
     new e4cf402  CAY-2694 Precision issues with reverse / forward engineering 
of time types on MySQL
e4cf402 is described below

commit e4cf402cff93193c8e5ac42276307abbe4585cc1
Author: Nikita Timofeev <stari...@gmail.com>
AuthorDate: Fri Jun 11 18:55:08 2021 +0300

    CAY-2694 Precision issues with reverse / forward engineering of time types 
on MySQL
---
 .../apache/cayenne/dbsync/merge/DbAttributeMerger.java   | 12 +++++++-----
 .../org/apache/cayenne/dbsync/merge/CheckTypeTest.java   | 16 ++++++++++++++++
 2 files changed, 23 insertions(+), 5 deletions(-)

diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbAttributeMerger.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbAttributeMerger.java
index 8e0500f..81c7f33 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbAttributeMerger.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbAttributeMerger.java
@@ -34,6 +34,13 @@ import org.apache.cayenne.dbsync.model.DetectedDbEntity;
 
 class DbAttributeMerger extends AbstractMerger<DbEntity, DbAttribute> {
 
+    static int[] typesWithMaxLength = {
+            Types.NCHAR, Types.NVARCHAR,
+            Types.CHAR, Types.VARCHAR,
+            Types.BINARY, Types.VARBINARY,
+            Types.TIME, Types.TIMESTAMP
+    };
+
     private final ValueForNullProvider valueForNull;
 
     DbAttributeMerger(MergerTokenFactory tokenFactory, ValueForNullProvider 
valueForNull) {
@@ -137,11 +144,6 @@ class DbAttributeMerger extends AbstractMerger<DbEntity, 
DbAttribute> {
         }
 
         if(original.getMaxLength() != imported.getMaxLength()) {
-            int[] typesWithMaxLength = {
-                    Types.NCHAR, Types.NVARCHAR,
-                    Types.CHAR, Types.VARCHAR,
-                    Types.BINARY, Types.VARBINARY
-            };
             for(int type : typesWithMaxLength) {
                 if(original.getType() == type) {
                     return true;
diff --git 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/CheckTypeTest.java
 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/CheckTypeTest.java
index 87a3cfc..387d2ab 100644
--- 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/CheckTypeTest.java
+++ 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/CheckTypeTest.java
@@ -169,6 +169,22 @@ public class CheckTypeTest {
     }
 
     @Test
+    public void testTimeType() {
+        original.setType(Types.TIMESTAMP);
+        original.setMaxLength(19);
+
+        imported.setType(Types.TIMESTAMP);
+        imported.setMaxLength(0);
+
+        Collection<MergerToken> mergerTokens = 
dbAttributeMerger.createTokensForSame(diffPair);
+        assertEquals(1, mergerTokens.size());
+
+        MergerToken mergerToken1 = (MergerToken) mergerTokens.toArray()[0];
+        String mergerToken = "NEW_TABLE.NAME maxLength: 0 -> 19";
+        assertEquals(mergerToken, mergerToken1.getTokenValue());
+    }
+
+    @Test
     public void testCheckTypeWithoutChanges() {
 
         diffPair = new MergerDiffPair<>(original, imported);

Reply via email to