diff --git a/components/core/core-initializers/src/main/java/org/eclipse/dirigible/components/initializers/definition/DefinitionRepository.java b/components/core/core-initializers/src/main/java/org/eclipse/dirigible/components/initializers/definition/DefinitionRepository.java index 33d0adeb51..c84ac06463 100644 --- a/components/core/core-initializers/src/main/java/org/eclipse/dirigible/components/initializers/definition/DefinitionRepository.java +++ b/components/core/core-initializers/src/main/java/org/eclipse/dirigible/components/initializers/definition/DefinitionRepository.java @@ -33,4 +33,14 @@ public interface DefinitionRepository extends JpaRepository { @Query("update Definition d set d.checksum = :checksum where d.type in :types") void updateChecksums(String checksum, Set types); + /** + * Initialize checksums. + * + * @param location the location + */ + @Modifying + @Transactional + @Query("update Definition d set d.checksum = '' where d.location like :location") + void initializeChecksums(String location); + } diff --git a/components/core/core-initializers/src/main/java/org/eclipse/dirigible/components/initializers/definition/DefinitionService.java b/components/core/core-initializers/src/main/java/org/eclipse/dirigible/components/initializers/definition/DefinitionService.java index 17757e3ac7..54475008d7 100644 --- a/components/core/core-initializers/src/main/java/org/eclipse/dirigible/components/initializers/definition/DefinitionService.java +++ b/components/core/core-initializers/src/main/java/org/eclipse/dirigible/components/initializers/definition/DefinitionService.java @@ -131,4 +131,13 @@ public void updateChecksums(String checksum, Set types) { definitionRepository.updateChecksums(checksum, types); } + /** + * Initialize checksums. + * + * @param location the location + */ + public void initializeChecksums(String location) { + definitionRepository.initializeChecksums(location + "%"); + } + } diff --git a/components/core/core-initializers/src/main/java/org/eclipse/dirigible/components/initializers/synchronizer/SynchronizationWatcherPublisherHandler.java b/components/core/core-initializers/src/main/java/org/eclipse/dirigible/components/initializers/synchronizer/SynchronizationWatcherPublisherHandler.java index c0ae004adc..461a2b06d4 100644 --- a/components/core/core-initializers/src/main/java/org/eclipse/dirigible/components/initializers/synchronizer/SynchronizationWatcherPublisherHandler.java +++ b/components/core/core-initializers/src/main/java/org/eclipse/dirigible/components/initializers/synchronizer/SynchronizationWatcherPublisherHandler.java @@ -11,6 +11,8 @@ import org.eclipse.dirigible.components.base.publisher.PublisherHandler; import org.eclipse.dirigible.components.base.synchronizer.SynchronizationWatcher; +import org.eclipse.dirigible.components.initializers.definition.DefinitionService; +import org.eclipse.dirigible.repository.api.IRepositoryStructure; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @@ -27,6 +29,9 @@ public class SynchronizationWatcherPublisherHandler implements PublisherHandler @Autowired private SynchronizationWatcher synchronizationWatcher; + @Autowired + private DefinitionService definitionService; + /** * Before publish. * @@ -66,6 +71,11 @@ public void beforeUnpublish(String location) { */ @Override public void afterUnpublish(String location) { + String path = location; + if (location.startsWith(IRepositoryStructure.PATH_REGISTRY_PUBLIC)) { + path = path.substring(IRepositoryStructure.PATH_REGISTRY_PUBLIC.length()); + } + definitionService.initializeChecksums(path); synchronizationWatcher.force(); } diff --git a/components/data/data-structures/src/main/java/org/eclipse/dirigible/components/data/structures/synchronizer/table/TableAlterProcessor.java b/components/data/data-structures/src/main/java/org/eclipse/dirigible/components/data/structures/synchronizer/table/TableAlterProcessor.java index be5473d940..ca55b3c6e3 100644 --- a/components/data/data-structures/src/main/java/org/eclipse/dirigible/components/data/structures/synchronizer/table/TableAlterProcessor.java +++ b/components/data/data-structures/src/main/java/org/eclipse/dirigible/components/data/structures/synchronizer/table/TableAlterProcessor.java @@ -76,8 +76,7 @@ public static void execute(Connection connection, Table tableModel) throws SQLEx // ADD iteration for (TableColumn columnModel : tableModel.getColumns()) { - String name = "\"" + columnModel.getName() + "\""; - String nameOriginal = name; + String name = columnModel.getName(); DataType type = DataType.valueOfByName(columnModel.getType()); String length = columnModel.getLength(); @@ -112,7 +111,7 @@ public static void execute(Connection connection, Table tableModel) throws SQLEx modelColumnNames.add(name.toUpperCase()); - String nameOriginalCanonical = nameOriginal.toUpperCase(); + String nameOriginalCanonical = name.toUpperCase(); if (!columnDefinitions.containsKey(nameOriginalCanonical)) { AlterTableBuilder alterTableBuilder = SqlFactory.getNative(connection) @@ -120,7 +119,7 @@ public static void execute(Connection connection, Table tableModel) throws SQLEx .table(tableName); alterTableBuilder.add() - .column(name, type, isPrimaryKey, isNullable, isUnique, args); + .column("\"" + name + "\"", type, isPrimaryKey, isNullable, isUnique, args); if (!isNullable) { throw new SQLException(String.format(INCOMPATIBLE_CHANGE_OF_TABLE, tableName, name, "NOT NULL")); @@ -144,13 +143,12 @@ public static void execute(Connection connection, Table tableModel) throws SQLEx // DROP iteration for (String columnName : columnDefinitions.keySet()) { - columnName = "\"" + columnName + "\""; if (!modelColumnNames.contains(columnName.toUpperCase())) { AlterTableBuilder alterTableBuilder = SqlFactory.getNative(connection) .alter() .table(tableName); alterTableBuilder.drop() - .column(columnName, DataType.BOOLEAN); + .column("\"" + columnName + "\"", DataType.BOOLEAN); executeAlterBuilder(connection, alterTableBuilder); } } diff --git a/modules/database/database-sql/src/main/java/org/eclipse/dirigible/database/sql/DataTypeUtils.java b/modules/database/database-sql/src/main/java/org/eclipse/dirigible/database/sql/DataTypeUtils.java index f6ade7ade5..3570fbcdc7 100644 --- a/modules/database/database-sql/src/main/java/org/eclipse/dirigible/database/sql/DataTypeUtils.java +++ b/modules/database/database-sql/src/main/java/org/eclipse/dirigible/database/sql/DataTypeUtils.java @@ -100,6 +100,8 @@ public class DataTypeUtils { private static final String TIMESTAMP = "TIMESTAMP"; /** The Constant DATE. */ private static final String DATE = "DATE"; + /** The Constant DATE. */ + private static final String DATETIME = "DATETIME"; /** The Constant TEXT. */ private static final String TEXT = "TEXT"; /** The Constant CHARACTER. */ @@ -275,6 +277,7 @@ public class DataTypeUtils { UNIFIED_STRING_FROM_DATABASE_TYPE.put(BINARY_VARYING, BLOB); UNIFIED_STRING_FROM_DATABASE_TYPE.put(BINARY_LARGE_OBJECT, BLOB); UNIFIED_STRING_FROM_DATABASE_TYPE.put(BYTEA, BLOB); + UNIFIED_STRING_FROM_DATABASE_TYPE.put(DATETIME, TIMESTAMP); }