From 46a65066f6941e884dc1a0db9859251314a8ba15 Mon Sep 17 00:00:00 2001 From: chenson42 Date: Thu, 29 Jan 2015 12:17:14 +0000 Subject: [PATCH] 0002152: DDL errors on DB2 i5 AS/400 --- .../db/AbstractSymmetricDialect.java | 61 +++++++++++-------- 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/db/AbstractSymmetricDialect.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/db/AbstractSymmetricDialect.java index 903dffd87f..e674285da5 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/db/AbstractSymmetricDialect.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/db/AbstractSymmetricDialect.java @@ -403,39 +403,48 @@ public boolean createOrAlterTablesIfNecessary(String... tableNames) { List alterDatabaseInterceptors = extensionService.getExtensionPointList(IAlterDatabaseInterceptor.class); IAlterDatabaseInterceptor[] interceptors = alterDatabaseInterceptors.toArray(new IAlterDatabaseInterceptor[alterDatabaseInterceptors.size()]); if (builder.isAlterDatabase(modelFromDatabase, modelFromXml, interceptors)) { - log.info("There are SymmetricDS tables that needed altered"); String delimiter = platform.getDatabaseInfo().getSqlCommandDelimiter(); - - ISqlResultsListener resultsListener = new LogSqlResultsListener(log); - List databaseUpgradeListeners = extensionService.getExtensionPointList(IDatabaseUpgradeListener.class); - - for (IDatabaseUpgradeListener listener : databaseUpgradeListeners) { - String sql = listener - .beforeUpgrade(this, this.parameterService.getTablePrefix(), - modelFromDatabase, modelFromXml); - SqlScript script = new SqlScript(sql, getPlatform().getSqlTemplate(), true, false, false, delimiter, null); - script.setListener(resultsListener); - script.execute(platform.getDatabaseInfo().isRequiresAutoCommitForDdl()); - } - - String alterSql = builder.alterDatabase(modelFromDatabase, modelFromXml, interceptors); - log.debug("Alter SQL generated: {}", alterSql); + ISqlResultsListener resultsListener = new LogSqlResultsListener(log); + List databaseUpgradeListeners = extensionService + .getExtensionPointList(IDatabaseUpgradeListener.class); + + String alterSql = builder.alterDatabase(modelFromDatabase, modelFromXml, + interceptors); + if (isNotBlank(alterSql)) { + log.info("There are SymmetricDS tables that needed altered"); + + for (IDatabaseUpgradeListener listener : databaseUpgradeListeners) { + String sql = listener.beforeUpgrade(this, + this.parameterService.getTablePrefix(), modelFromDatabase, + modelFromXml); + SqlScript script = new SqlScript(sql, getPlatform().getSqlTemplate(), true, + false, false, delimiter, null); + script.setListener(resultsListener); + script.execute(platform.getDatabaseInfo().isRequiresAutoCommitForDdl()); + } - SqlScript script = new SqlScript(alterSql, getPlatform().getSqlTemplate(), true, false, false, delimiter, null); - script.setListener(resultsListener); - script.execute(platform.getDatabaseInfo().isRequiresAutoCommitForDdl()); + log.debug("Alter SQL generated: {}", alterSql); - for (IDatabaseUpgradeListener listener : databaseUpgradeListeners) { - String sql = listener.afterUpgrade(this, - this.parameterService.getTablePrefix(), modelFromXml); - script = new SqlScript(sql, getPlatform().getSqlTemplate(), true, false, false, delimiter, null); + SqlScript script = new SqlScript(alterSql, getPlatform().getSqlTemplate(), + true, false, false, delimiter, null); script.setListener(resultsListener); script.execute(platform.getDatabaseInfo().isRequiresAutoCommitForDdl()); - } - log.info("Done with auto update of SymmetricDS tables"); - return true; + for (IDatabaseUpgradeListener listener : databaseUpgradeListeners) { + String sql = listener.afterUpgrade(this, + this.parameterService.getTablePrefix(), modelFromXml); + script = new SqlScript(sql, getPlatform().getSqlTemplate(), true, false, + false, delimiter, null); + script.setListener(resultsListener); + script.execute(platform.getDatabaseInfo().isRequiresAutoCommitForDdl()); + } + + log.info("Done with auto update of SymmetricDS tables"); + return true; + } else { + return false; + } } else { return false; }