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 <[email protected]>
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);