From 4f360b1a127795c70ee1497c0cc7ad5283a70817 Mon Sep 17 00:00:00 2001 From: chenson42 Date: Wed, 28 Dec 2011 14:07:38 +0000 Subject: [PATCH] set query timeouts and fetch size in the new sql template classes from symmetric --- .../symmetric/db/DbDialectFactory.java | 272 +++++++++--------- .../src/main/resources/symmetric-database.xml | 1 + .../db/JdbcDatabasePlatformFactory.java | 11 +- .../AbstractJdbcDatabasePlatform.java | 11 +- .../db/platform/DatabasePlatformSettings.java | 32 +++ .../jumpmind/db/platform/db2/Db2Platform.java | 5 +- .../db/platform/derby/DerbyPlatform.java | 5 +- .../platform/firebird/FirebirdPlatform.java | 5 +- .../platform/greenplum/GreenplumPlatform.java | 5 +- .../jumpmind/db/platform/h2/H2Platform.java | 5 +- .../db/platform/hsqldb/HsqlDbPlatform.java | 6 +- .../db/platform/hsqldb2/HsqlDb2Platform.java | 5 +- .../platform/informix/InformixPlatform.java | 5 +- .../platform/interbase/InterbasePlatform.java | 5 +- .../platform/mssql/MsSqlJdbcSqlTemplate.java | 5 +- .../db/platform/mssql/MsSqlPlatform.java | 9 +- .../db/platform/mysql/MySqlPlatform.java | 5 +- .../db/platform/oracle/OraclePlatform.java | 5 +- .../postgresql/PostgreSqlPlatform.java | 9 +- .../db/platform/sqlite/SqLitePlatform.java | 5 +- .../db/platform/sybase/SybasePlatform.java | 5 +- .../db/sql/jdbc/JdbcSqlReadCursor.java | 4 +- .../jumpmind/db/sql/jdbc/JdbcSqlTemplate.java | 40 ++- .../java/org/jumpmind/db/DbTestUtils.java | 3 +- .../io/data/reader/BatchCsvDataReader.java | 22 +- .../DatabaseWriterPropertyConstants.java | 19 -- .../symmetric/db/SqlScriptUnitTest.java | 3 +- .../symmetric/test/SimpleIntegrationTest.java | 30 +- 28 files changed, 293 insertions(+), 244 deletions(-) create mode 100644 symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/DatabasePlatformSettings.java delete mode 100644 symmetric/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/DatabaseWriterPropertyConstants.java diff --git a/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/db/DbDialectFactory.java b/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/db/DbDialectFactory.java index 57bd7e910b..2ac62b3293 100644 --- a/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/db/DbDialectFactory.java +++ b/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/db/DbDialectFactory.java @@ -16,16 +16,17 @@ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. */ - - -package org.jumpmind.symmetric.db; - + * under the License. + */ + +package org.jumpmind.symmetric.db; + import java.sql.Connection; import java.sql.SQLException; import org.jumpmind.db.IDatabasePlatform; import org.jumpmind.db.JdbcDatabasePlatformFactory; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.db.platform.db2.Db2Platform; import org.jumpmind.db.platform.derby.DerbyPlatform; import org.jumpmind.db.platform.firebird.FirebirdPlatform; @@ -52,162 +53,173 @@ import org.springframework.jdbc.CannotGetJdbcConnectionException; import org.springframework.jdbc.core.ConnectionCallback; import org.springframework.jdbc.core.JdbcTemplate; - + /** - * Factory class that is responsible for creating the appropriate {@link IDbDialect} for - * the configured database. + * Factory class that is responsible for creating the appropriate + * {@link IDbDialect} for the configured database. */ -public class DbDialectFactory implements FactoryBean, BeanFactoryAware { - - private static final ILog log = LogFactory.getLog(DbDialectFactory.class); +public class DbDialectFactory implements FactoryBean, BeanFactoryAware { + + private static final ILog log = LogFactory.getLog(DbDialectFactory.class); private IParameterService parameterService; - - private String db2zSeriesProductVersion; - - private JdbcTemplate jdbcTemplate; - - private BeanFactory beanFactory; - + + private String db2zSeriesProductVersion; + + private JdbcTemplate jdbcTemplate; + + private BeanFactory beanFactory; + private int queryTimeout; - + + private int fetchSize; + private boolean forceDelimitedIdentifierModeOn = false; - + private boolean forceDelimitedIdentifierModeOff = false; - - private long tableCacheTimeoutInMs; - - public IDbDialect getObject() throws Exception { - - waitForAvailableDatabase(); - - IDatabasePlatform pf = JdbcDatabasePlatformFactory.createNewPlatformInstance(jdbcTemplate.getDataSource(), - org.jumpmind.log.LogFactory.getLog("org.jumpmind." + parameterService.getString(ParameterConstants.ENGINE_NAME))); - + + private long tableCacheTimeoutInMs; + + public IDbDialect getObject() throws Exception { + + waitForAvailableDatabase(); + + IDatabasePlatform pf = JdbcDatabasePlatformFactory.createNewPlatformInstance( + jdbcTemplate.getDataSource(), + new DatabasePlatformSettings(fetchSize, queryTimeout), + org.jumpmind.log.LogFactory.getLog("org.jumpmind." + + parameterService.getString(ParameterConstants.ENGINE_NAME))); + if (forceDelimitedIdentifierModeOn) { pf.setDelimitedIdentifierModeOn(true); } - + if (forceDelimitedIdentifierModeOff) { pf.setDelimitedIdentifierModeOn(false); } - - pf.setClearCacheModelTimeoutInMs(tableCacheTimeoutInMs); - - AbstractDbDialect dialect = null; - - if (pf instanceof MySqlPlatform) { - dialect = (AbstractDbDialect) beanFactory.getBean("mysqlDialect"); - } else if (pf instanceof OraclePlatform) { - dialect = (AbstractDbDialect) beanFactory.getBean("oracleDialect"); - } else if (pf instanceof MsSqlPlatform) { + + pf.setClearCacheModelTimeoutInMs(tableCacheTimeoutInMs); + + AbstractDbDialect dialect = null; + + if (pf instanceof MySqlPlatform) { + dialect = (AbstractDbDialect) beanFactory.getBean("mysqlDialect"); + } else if (pf instanceof OraclePlatform) { + dialect = (AbstractDbDialect) beanFactory.getBean("oracleDialect"); + } else if (pf instanceof MsSqlPlatform) { dialect = (AbstractDbDialect) beanFactory.getBean("msSqlDialect"); } else if (pf instanceof GreenplumPlatform) { - dialect = (AbstractDbDialect) beanFactory.getBean("greenplumDialect"); - } else if (pf instanceof PostgreSqlPlatform) { - dialect = (AbstractDbDialect) beanFactory.getBean("postgresqlDialect"); - } else if (pf instanceof DerbyPlatform) { - dialect = (AbstractDbDialect) beanFactory.getBean("derbyDialect"); - } else if (pf instanceof H2Platform) { - dialect = (AbstractDbDialect) beanFactory.getBean("h2Dialect"); - } else if (pf instanceof SqLitePlatform) { - dialect = (AbstractDbDialect) beanFactory.getBean("sqliteDialect"); - } else if (pf instanceof HsqlDbPlatform) { - dialect = (AbstractDbDialect) beanFactory.getBean("hsqldbDialect"); - } else if (pf instanceof HsqlDb2Platform) { - dialect = (AbstractDbDialect) beanFactory.getBean("hsqldb2Dialect"); - } else if (pf instanceof InformixPlatform) { - dialect = (AbstractDbDialect) beanFactory.getBean("informixDialect"); - } else if (pf instanceof Db2Platform) { - String currentDbProductVersion = JdbcDatabasePlatformFactory.getDatabaseProductVersion(jdbcTemplate - .getDataSource()); - if (currentDbProductVersion.equals(db2zSeriesProductVersion)) { - dialect = (AbstractDbDialect) beanFactory.getBean("db2zSeriesDialect"); + dialect = (AbstractDbDialect) beanFactory.getBean("greenplumDialect"); + } else if (pf instanceof PostgreSqlPlatform) { + dialect = (AbstractDbDialect) beanFactory.getBean("postgresqlDialect"); + } else if (pf instanceof DerbyPlatform) { + dialect = (AbstractDbDialect) beanFactory.getBean("derbyDialect"); + } else if (pf instanceof H2Platform) { + dialect = (AbstractDbDialect) beanFactory.getBean("h2Dialect"); + } else if (pf instanceof SqLitePlatform) { + dialect = (AbstractDbDialect) beanFactory.getBean("sqliteDialect"); + } else if (pf instanceof HsqlDbPlatform) { + dialect = (AbstractDbDialect) beanFactory.getBean("hsqldbDialect"); + } else if (pf instanceof HsqlDb2Platform) { + dialect = (AbstractDbDialect) beanFactory.getBean("hsqldb2Dialect"); + } else if (pf instanceof InformixPlatform) { + dialect = (AbstractDbDialect) beanFactory.getBean("informixDialect"); + } else if (pf instanceof Db2Platform) { + String currentDbProductVersion = JdbcDatabasePlatformFactory + .getDatabaseProductVersion(jdbcTemplate.getDataSource()); + if (currentDbProductVersion.equals(db2zSeriesProductVersion)) { + dialect = (AbstractDbDialect) beanFactory.getBean("db2zSeriesDialect"); } else { - int dbMajorVersion = JdbcDatabasePlatformFactory.getDatabaseMajorVersion(jdbcTemplate.getDataSource()); - int dbMinorVersion = JdbcDatabasePlatformFactory.getDatabaseMinorVersion(jdbcTemplate.getDataSource()); - if (dbMajorVersion < 9 || (dbMajorVersion == 9 && dbMinorVersion < 5)) { - dialect = (AbstractDbDialect) beanFactory.getBean("db2Dialect"); - } else { - dialect = (AbstractDbDialect) beanFactory.getBean("db2v9Dialect"); - } - } - } else if (pf instanceof FirebirdPlatform) { - dialect = (AbstractDbDialect) beanFactory.getBean("firebirdDialect"); + int dbMajorVersion = JdbcDatabasePlatformFactory + .getDatabaseMajorVersion(jdbcTemplate.getDataSource()); + int dbMinorVersion = JdbcDatabasePlatformFactory + .getDatabaseMinorVersion(jdbcTemplate.getDataSource()); + if (dbMajorVersion < 9 || (dbMajorVersion == 9 && dbMinorVersion < 5)) { + dialect = (AbstractDbDialect) beanFactory.getBean("db2Dialect"); + } else { + dialect = (AbstractDbDialect) beanFactory.getBean("db2v9Dialect"); + } + } + } else if (pf instanceof FirebirdPlatform) { + dialect = (AbstractDbDialect) beanFactory.getBean("firebirdDialect"); } else if (pf instanceof SybasePlatform) { dialect = (AbstractDbDialect) beanFactory.getBean("sybaseDialect"); } else if (pf instanceof InterbasePlatform) { dialect = (AbstractDbDialect) beanFactory.getBean("interbaseDialect"); - } else { - throw new DbNotSupportedException(); - } - - dialect.init(pf, queryTimeout, jdbcTemplate); - return dialect; - } - - private void waitForAvailableDatabase() { - boolean success = false; - while (!success) { - try { - jdbcTemplate.execute(new ConnectionCallback() { - public Object doInConnection(Connection con) throws SQLException, - DataAccessException { - return null; - } - }); - success = true; - } catch (CannotGetJdbcConnectionException ex) { - log.error("DatabaseConnectionException", ex.getMessage()); - try { - Thread.sleep(10000); - } catch (InterruptedException e) { - } - } - } - } - - public Class getObjectType() { - return IDbDialect.class; - } - - public boolean isSingleton() { - return true; - } - - public void setBeanFactory(BeanFactory beanFactory) { - this.beanFactory = beanFactory; - } - - public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } - - /** - * Sets the database product version for zOS db2 from the properties file - */ - public void setDb2zSeriesProductVersion(String version) { - this.db2zSeriesProductVersion = version; - } - - public void setQueryTimeout(int queryTimeout) { - this.queryTimeout = queryTimeout; + } else { + throw new DbNotSupportedException(); + } + + dialect.init(pf, queryTimeout, jdbcTemplate); + return dialect; } - + + private void waitForAvailableDatabase() { + boolean success = false; + while (!success) { + try { + jdbcTemplate.execute(new ConnectionCallback() { + public Object doInConnection(Connection con) throws SQLException, + DataAccessException { + return null; + } + }); + success = true; + } catch (CannotGetJdbcConnectionException ex) { + log.error("DatabaseConnectionException", ex.getMessage()); + try { + Thread.sleep(10000); + } catch (InterruptedException e) { + } + } + } + } + + public Class getObjectType() { + return IDbDialect.class; + } + + public boolean isSingleton() { + return true; + } + + public void setBeanFactory(BeanFactory beanFactory) { + this.beanFactory = beanFactory; + } + + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + /** + * Sets the database product version for zOS db2 from the properties file + */ + public void setDb2zSeriesProductVersion(String version) { + this.db2zSeriesProductVersion = version; + } + + public void setQueryTimeout(int queryTimeout) { + this.queryTimeout = queryTimeout; + } + + public void setFetchSize(int fetchSize) { + this.fetchSize = fetchSize; + } + public void setForceDelimitedIdentifierModeOn(boolean forceDelimitedIdentifierModeOn) { this.forceDelimitedIdentifierModeOn = forceDelimitedIdentifierModeOn; } - + public void setForceDelimitedIdentifierModeOff(boolean forceDelimitedIdentifierModeOff) { this.forceDelimitedIdentifierModeOff = forceDelimitedIdentifierModeOff; } - + public void setParameterService(IParameterService parameterService) { this.parameterService = parameterService; } - + public void setTableCacheTimeoutInMs(long tableCacheTimeoutInMs) { this.tableCacheTimeoutInMs = tableCacheTimeoutInMs; } - + } \ No newline at end of file diff --git a/symmetric/symmetric-core/src/main/resources/symmetric-database.xml b/symmetric/symmetric-core/src/main/resources/symmetric-database.xml index 2cf18e5935..46c9e6eb88 100644 --- a/symmetric/symmetric-core/src/main/resources/symmetric-database.xml +++ b/symmetric/symmetric-core/src/main/resources/symmetric-database.xml @@ -74,6 +74,7 @@ + diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/JdbcDatabasePlatformFactory.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/JdbcDatabasePlatformFactory.java index 8ea973f2e0..f5e72ef5c1 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/JdbcDatabasePlatformFactory.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/JdbcDatabasePlatformFactory.java @@ -31,6 +31,7 @@ import javax.sql.DataSource; import org.apache.commons.lang.StringUtils; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.db.platform.db2.Db2Platform; import org.jumpmind.db.platform.derby.DerbyPlatform; import org.jumpmind.db.platform.firebird.FirebirdPlatform; @@ -110,9 +111,9 @@ public class JdbcDatabasePlatformFactory { FirebirdPlatform.DATABASENAME); } - public static synchronized IDatabasePlatform createNewPlatformInstance(DataSource dataSource) + public static synchronized IDatabasePlatform createNewPlatformInstance(DataSource dataSource, DatabasePlatformSettings settings) throws DdlException { - return createNewPlatformInstance(dataSource, null); + return createNewPlatformInstance(dataSource, settings, null); } /* @@ -125,7 +126,7 @@ public static synchronized IDatabasePlatform createNewPlatformInstance(DataSourc * @return The platform or null if the database is not * supported */ - public static synchronized IDatabasePlatform createNewPlatformInstance(DataSource dataSource, Log log) + public static synchronized IDatabasePlatform createNewPlatformInstance(DataSource dataSource, DatabasePlatformSettings settings, Log log) throws DdlException { if (log == null) { @@ -139,8 +140,8 @@ public static synchronized IDatabasePlatform createNewPlatformInstance(DataSourc Class clazz = findPlatformClass(nameVersion); try { - Constructor construtor = clazz.getConstructor(DataSource.class, Log.class); - return construtor.newInstance(dataSource, log); + Constructor construtor = clazz.getConstructor(DataSource.class, DatabasePlatformSettings.class, Log.class); + return construtor.newInstance(dataSource, settings, log); } catch (Exception e) { throw new DdlException("Could not create a platform of type " + nameVersion[0], e); } diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/AbstractJdbcDatabasePlatform.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/AbstractJdbcDatabasePlatform.java index 2f847708e5..30d039b6c6 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/AbstractJdbcDatabasePlatform.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/AbstractJdbcDatabasePlatform.java @@ -15,14 +15,17 @@ abstract public class AbstractJdbcDatabasePlatform extends AbstractDatabasePlatf protected ISqlTemplate sqlTemplate; - public AbstractJdbcDatabasePlatform(DataSource dataSource, Log log) { + protected DatabasePlatformSettings settings; + + public AbstractJdbcDatabasePlatform(DataSource dataSource, DatabasePlatformSettings settings, Log log) { super(log); this.dataSource = dataSource; - createSqlTemplate(dataSource); + this.settings = settings; + createSqlTemplate(); } - protected void createSqlTemplate(DataSource dataSource) { - this.sqlTemplate = new JdbcSqlTemplate(dataSource); + protected void createSqlTemplate() { + this.sqlTemplate = new JdbcSqlTemplate(dataSource, settings, null); } @Override diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/DatabasePlatformSettings.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/DatabasePlatformSettings.java new file mode 100644 index 0000000000..4c124133e5 --- /dev/null +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/DatabasePlatformSettings.java @@ -0,0 +1,32 @@ +package org.jumpmind.db.platform; + +public class DatabasePlatformSettings { + + protected int fetchSize = 1000; + protected int queryTimeout; + + public DatabasePlatformSettings() { + } + + public DatabasePlatformSettings(int fetchSize, int queryTimeout) { + this.fetchSize = fetchSize; + this.queryTimeout = queryTimeout; + } + + public void setFetchSize(int fetchSize) { + this.fetchSize = fetchSize; + } + + public int getFetchSize() { + return fetchSize; + } + + public void setQueryTimeout(int queryTimeout) { + this.queryTimeout = queryTimeout; + } + + public int getQueryTimeout() { + return queryTimeout; + } + +} diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/db2/Db2Platform.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/db2/Db2Platform.java index 5fa6f79912..d5168c28b2 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/db2/Db2Platform.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/db2/Db2Platform.java @@ -25,6 +25,7 @@ import org.apache.commons.lang.StringUtils; import org.jumpmind.db.platform.AbstractJdbcDatabasePlatform; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.log.Log; /* @@ -44,8 +45,8 @@ public class Db2Platform extends AbstractJdbcDatabasePlatform { /* * Creates a new platform instance. */ - public Db2Platform(DataSource dataSource, Log log) { - super(dataSource, log); + public Db2Platform(DataSource dataSource, DatabasePlatformSettings settings, Log log) { + super(dataSource, settings, log); // the BINARY types are also handled by Db2Builder.getSqlType(Column) info.addNativeTypeMapping(Types.ARRAY, "BLOB", Types.BLOB); diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/derby/DerbyPlatform.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/derby/DerbyPlatform.java index eb0035a7b2..bd2cc54eed 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/derby/DerbyPlatform.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/derby/DerbyPlatform.java @@ -25,6 +25,7 @@ import org.apache.commons.lang.StringUtils; import org.jumpmind.db.platform.AbstractJdbcDatabasePlatform; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.log.Log; /* @@ -47,8 +48,8 @@ public class DerbyPlatform extends AbstractJdbcDatabasePlatform { /* * Creates a new Derby platform instance. */ - public DerbyPlatform(DataSource dataSource, Log log) { - super(dataSource, log); + public DerbyPlatform(DataSource dataSource, DatabasePlatformSettings settings, Log log) { + super(dataSource, settings, log); info.setMaxIdentifierLength(128); info.setSystemForeignKeyIndicesAlwaysNonUnique(true); diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/firebird/FirebirdPlatform.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/firebird/FirebirdPlatform.java index ca2030d267..b557220bd8 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/firebird/FirebirdPlatform.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/firebird/FirebirdPlatform.java @@ -25,6 +25,7 @@ import org.jumpmind.db.DatabasePlatformInfo; import org.jumpmind.db.platform.AbstractJdbcDatabasePlatform; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.log.Log; /* @@ -44,8 +45,8 @@ public class FirebirdPlatform extends AbstractJdbcDatabasePlatform { /* * Creates a new Firebird platform instance. */ - public FirebirdPlatform(DataSource dataSource, Log log) { - super(dataSource, log); + public FirebirdPlatform(DataSource dataSource, DatabasePlatformSettings settings, Log log) { + super(dataSource, settings, log); DatabasePlatformInfo info = getPlatformInfo(); diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/greenplum/GreenplumPlatform.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/greenplum/GreenplumPlatform.java index a35549f4be..15c9a01a95 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/greenplum/GreenplumPlatform.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/greenplum/GreenplumPlatform.java @@ -2,6 +2,7 @@ import javax.sql.DataSource; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.db.platform.postgresql.PostgreSqlPlatform; import org.jumpmind.log.Log; @@ -15,8 +16,8 @@ public class GreenplumPlatform extends PostgreSqlPlatform { public static final String SQL_GET_GREENPLUM_NAME = "select gpname from gp_id"; public static final String SQL_GET_GREENPLUM_VERSION = "select productversion from gp_version_at_initdb"; - public GreenplumPlatform(DataSource dataSource, Log log) { - super(dataSource, log); + public GreenplumPlatform(DataSource dataSource, DatabasePlatformSettings settings, Log log) { + super(dataSource, settings, log); info.setTriggersSupported(false); this.ddlReader = new GreenplumDdlReader(log, this); } diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/h2/H2Platform.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/h2/H2Platform.java index cb78a6a028..3467b03a13 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/h2/H2Platform.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/h2/H2Platform.java @@ -26,6 +26,7 @@ import org.apache.commons.lang.StringUtils; import org.jumpmind.db.IDatabasePlatform; import org.jumpmind.db.platform.AbstractJdbcDatabasePlatform; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.log.Log; /* @@ -45,8 +46,8 @@ public class H2Platform extends AbstractJdbcDatabasePlatform implements IDatabas /* * Creates a new instance of the H2 platform. */ - public H2Platform(DataSource dataSource, Log log) { - super(dataSource, log); + public H2Platform(DataSource dataSource, DatabasePlatformSettings settings, Log log) { + super(dataSource, settings, log); info.setNonPKIdentityColumnsSupported(false); info.setIdentityOverrideAllowed(false); diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/hsqldb/HsqlDbPlatform.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/hsqldb/HsqlDbPlatform.java index 4c7490bb23..581e8dff8f 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/hsqldb/HsqlDbPlatform.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/hsqldb/HsqlDbPlatform.java @@ -24,6 +24,7 @@ import javax.sql.DataSource; import org.jumpmind.db.platform.AbstractJdbcDatabasePlatform; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.log.Log; /* @@ -42,9 +43,8 @@ public class HsqlDbPlatform extends AbstractJdbcDatabasePlatform { /* * Creates a new instance of the Hsqldb platform. */ - public HsqlDbPlatform(DataSource dataSource, Log log) { - super(dataSource, log); - + public HsqlDbPlatform(DataSource dataSource, DatabasePlatformSettings settings, Log log) { + super(dataSource, settings, log); info.setNonPKIdentityColumnsSupported(false); info.setIdentityOverrideAllowed(false); diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/hsqldb2/HsqlDb2Platform.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/hsqldb2/HsqlDb2Platform.java index 9d198bbc81..09abf9abd7 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/hsqldb2/HsqlDb2Platform.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/hsqldb2/HsqlDb2Platform.java @@ -24,6 +24,7 @@ import javax.sql.DataSource; import org.jumpmind.db.platform.AbstractJdbcDatabasePlatform; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.log.Log; /* @@ -43,8 +44,8 @@ public class HsqlDb2Platform extends AbstractJdbcDatabasePlatform { /* * Creates a new instance of the Hsqldb platform. */ - public HsqlDb2Platform(DataSource dataSource, Log log) { - super(dataSource, log); + public HsqlDb2Platform(DataSource dataSource, DatabasePlatformSettings settings, Log log) { + super(dataSource, settings, log); info.setNonPKIdentityColumnsSupported(false); info.setIdentityOverrideAllowed(false); diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/informix/InformixPlatform.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/informix/InformixPlatform.java index 07c9801f9b..6325ce3cb7 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/informix/InformixPlatform.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/informix/InformixPlatform.java @@ -8,6 +8,7 @@ import org.apache.commons.lang.StringUtils; import org.jumpmind.db.IDatabasePlatform; import org.jumpmind.db.platform.AbstractJdbcDatabasePlatform; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.log.Log; public class InformixPlatform extends AbstractJdbcDatabasePlatform implements IDatabasePlatform { @@ -18,8 +19,8 @@ public class InformixPlatform extends AbstractJdbcDatabasePlatform implements ID public static final String JDBC_SUBPROTOCOL = "informix-sqli"; - public InformixPlatform(DataSource dataSource, Log log) { - super(dataSource, log); + public InformixPlatform(DataSource dataSource, DatabasePlatformSettings settings, Log log) { + super(dataSource, settings, log); info.addNativeTypeMapping(Types.VARCHAR, "VARCHAR", Types.VARCHAR); info.addNativeTypeMapping(Types.LONGVARCHAR, "LVARCHAR", Types.LONGVARCHAR); diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/interbase/InterbasePlatform.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/interbase/InterbasePlatform.java index 4d6fec6462..b459c30e77 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/interbase/InterbasePlatform.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/interbase/InterbasePlatform.java @@ -24,6 +24,7 @@ import javax.sql.DataSource; import org.jumpmind.db.platform.AbstractJdbcDatabasePlatform; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.log.Log; /* @@ -45,8 +46,8 @@ public class InterbasePlatform extends AbstractJdbcDatabasePlatform { /* * Creates a new platform instance. */ - public InterbasePlatform(DataSource dataSource, Log log) { - super(dataSource, log); + public InterbasePlatform(DataSource dataSource, DatabasePlatformSettings settings, Log log) { + super(dataSource, settings, log); info.setMaxIdentifierLength(31); info.setCommentPrefix("/*"); diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/mssql/MsSqlJdbcSqlTemplate.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/mssql/MsSqlJdbcSqlTemplate.java index 3871f8e059..a740fe1270 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/mssql/MsSqlJdbcSqlTemplate.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/mssql/MsSqlJdbcSqlTemplate.java @@ -2,13 +2,14 @@ import javax.sql.DataSource; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.db.sql.ISqlTransaction; import org.jumpmind.db.sql.jdbc.JdbcSqlTemplate; public class MsSqlJdbcSqlTemplate extends JdbcSqlTemplate { - public MsSqlJdbcSqlTemplate(DataSource dataSource) { - super(dataSource); + public MsSqlJdbcSqlTemplate(DataSource dataSource, DatabasePlatformSettings settings) { + super(dataSource, settings, null); } @Override diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/mssql/MsSqlPlatform.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/mssql/MsSqlPlatform.java index ae7d3a2aba..d9fca75ada 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/mssql/MsSqlPlatform.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/mssql/MsSqlPlatform.java @@ -25,6 +25,7 @@ import org.apache.commons.lang.StringUtils; import org.jumpmind.db.platform.AbstractJdbcDatabasePlatform; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.log.Log; /* @@ -44,8 +45,8 @@ public class MsSqlPlatform extends AbstractJdbcDatabasePlatform { /* * Creates a new platform instance. */ - public MsSqlPlatform(DataSource dataSource, Log log) { - super(dataSource, log); + public MsSqlPlatform(DataSource dataSource, DatabasePlatformSettings settings, Log log) { + super(dataSource, settings, log); info.setMaxIdentifierLength(128); @@ -93,8 +94,8 @@ public MsSqlPlatform(DataSource dataSource, Log log) { } @Override - protected void createSqlTemplate(DataSource dataSource) { - this.sqlTemplate = new MsSqlJdbcSqlTemplate(dataSource); + protected void createSqlTemplate() { + this.sqlTemplate = new MsSqlJdbcSqlTemplate(dataSource, settings); } public String getName() { diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/mysql/MySqlPlatform.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/mysql/MySqlPlatform.java index 398a94ecf7..63c85eaa78 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/mysql/MySqlPlatform.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/mysql/MySqlPlatform.java @@ -25,6 +25,7 @@ import org.apache.commons.lang.StringUtils; import org.jumpmind.db.platform.AbstractJdbcDatabasePlatform; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.log.Log; /* @@ -47,8 +48,8 @@ public class MySqlPlatform extends AbstractJdbcDatabasePlatform { /* * Creates a new platform instance. */ - public MySqlPlatform(DataSource dataSource, Log log) { - super(dataSource, log); + public MySqlPlatform(DataSource dataSource, DatabasePlatformSettings settings, Log log) { + super(dataSource, settings, log); info.setMaxIdentifierLength(64); info.setNullAsDefaultValueRequired(true); diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/oracle/OraclePlatform.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/oracle/OraclePlatform.java index 2141aef9c4..2fcbb643fc 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/oracle/OraclePlatform.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/oracle/OraclePlatform.java @@ -25,6 +25,7 @@ import org.apache.commons.lang.StringUtils; import org.jumpmind.db.platform.AbstractJdbcDatabasePlatform; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.log.Log; /* @@ -53,8 +54,8 @@ public class OraclePlatform extends AbstractJdbcDatabasePlatform { /* * Creates a new platform instance. */ - public OraclePlatform(DataSource dataSource, Log log) { - super(dataSource, log); + public OraclePlatform(DataSource dataSource, DatabasePlatformSettings settings, Log log) { + super(dataSource, settings, log); info.setMaxIdentifierLength(30); info.setIdentityStatusReadingSupported(false); diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/postgresql/PostgreSqlPlatform.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/postgresql/PostgreSqlPlatform.java index d67ee105f8..489b8d4656 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/postgresql/PostgreSqlPlatform.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/postgresql/PostgreSqlPlatform.java @@ -32,6 +32,7 @@ import org.jumpmind.db.BinaryEncoding; import org.jumpmind.db.model.Column; import org.jumpmind.db.platform.AbstractJdbcDatabasePlatform; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.db.sql.DmlStatement; import org.jumpmind.db.sql.DmlStatement.DmlType; import org.jumpmind.log.Log; @@ -50,8 +51,12 @@ public class PostgreSqlPlatform extends AbstractJdbcDatabasePlatform { /* * Creates a new platform instance. */ - public PostgreSqlPlatform(DataSource dataSource, Log log) { - super(dataSource, log); + public PostgreSqlPlatform(DataSource dataSource, DatabasePlatformSettings settings, Log log) { + super(dataSource, settings, log); + + // Query timeout needs to be zero for postrgres because the jdbc driver does + // not support a timeout setting of of other than zero. + settings.setQueryTimeout(0); // this is the default length though it might be changed when building // PostgreSQL diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/sqlite/SqLitePlatform.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/sqlite/SqLitePlatform.java index 37cd3d91cb..1e03f977e3 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/sqlite/SqLitePlatform.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/sqlite/SqLitePlatform.java @@ -25,6 +25,7 @@ import org.jumpmind.db.IDatabasePlatform; import org.jumpmind.db.platform.AbstractJdbcDatabasePlatform; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.log.Log; /* @@ -41,8 +42,8 @@ public class SqLitePlatform extends AbstractJdbcDatabasePlatform implements IDat /* * Creates a new instance of the H2 platform. */ - public SqLitePlatform(DataSource dataSource, Log log) { - super(dataSource, log); + public SqLitePlatform(DataSource dataSource,DatabasePlatformSettings settings, Log log) { + super(dataSource, settings, log); info.setNonPKIdentityColumnsSupported(false); info.setIdentityOverrideAllowed(false); diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/sybase/SybasePlatform.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/sybase/SybasePlatform.java index 62e3404f71..61463ea647 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/sybase/SybasePlatform.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/platform/sybase/SybasePlatform.java @@ -25,6 +25,7 @@ import org.apache.commons.lang.StringUtils; import org.jumpmind.db.platform.AbstractJdbcDatabasePlatform; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.log.Log; /* @@ -47,8 +48,8 @@ public class SybasePlatform extends AbstractJdbcDatabasePlatform { /* The maximum size that text and binary columns can have. */ public static final long MAX_TEXT_SIZE = 2147483647; - public SybasePlatform(DataSource dataSource, Log log) { - super(dataSource, log); + public SybasePlatform(DataSource dataSource, DatabasePlatformSettings settings, Log log) { + super(dataSource, settings, log); info.setMaxIdentifierLength(128); info.setNullAsDefaultValueRequired(true); diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/sql/jdbc/JdbcSqlReadCursor.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/sql/jdbc/JdbcSqlReadCursor.java index d0384a8822..41c8691ade 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/sql/jdbc/JdbcSqlReadCursor.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/sql/jdbc/JdbcSqlReadCursor.java @@ -43,11 +43,11 @@ public JdbcSqlReadCursor(JdbcSqlTemplate sqlTemplate, ISqlRowMapper mapper, S st = c.prepareStatement(sql, java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); - st.setQueryTimeout(sqlTemplate.getQueryTimeout()); + st.setQueryTimeout(sqlTemplate.getSettings().getQueryTimeout()); if (values != null) { StatementCreatorUtil.setValues(st, values, types, sqlTemplate.getLobHandler()); } - st.setFetchSize(sqlTemplate.getFetchSize()); + st.setFetchSize(sqlTemplate.getSettings().getFetchSize()); rs = st.executeQuery(); } catch (SQLException ex) { throw sqlTemplate.translate(sql, ex); diff --git a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/sql/jdbc/JdbcSqlTemplate.java b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/sql/jdbc/JdbcSqlTemplate.java index a863b28ea9..98ef424433 100644 --- a/symmetric/symmetric-db/src/main/java/org/jumpmind/db/sql/jdbc/JdbcSqlTemplate.java +++ b/symmetric/symmetric-db/src/main/java/org/jumpmind/db/sql/jdbc/JdbcSqlTemplate.java @@ -12,6 +12,7 @@ import javax.sql.DataSource; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.db.sql.AbstractSqlTemplate; import org.jumpmind.db.sql.ISqlReadCursor; import org.jumpmind.db.sql.ISqlRowMapper; @@ -23,7 +24,6 @@ import org.jumpmind.log.LogLevel; import org.jumpmind.util.LinkedCaseInsensitiveMap; -// TODO make sure connection timeouts are set properly public class JdbcSqlTemplate extends AbstractSqlTemplate implements ISqlTemplate { static final Log log = LogFactory.getLog(JdbcSqlTemplate.class); @@ -32,12 +32,14 @@ public class JdbcSqlTemplate extends AbstractSqlTemplate implements ISqlTemplate protected boolean requiresAutoCommitFalseToSetFetchSize = false; - protected int queryTimeout; + protected DatabasePlatformSettings settings; + + protected ILobHandler lobHandler; - protected int fetchSize = 1000; - - public JdbcSqlTemplate(DataSource dataSource) { + public JdbcSqlTemplate(DataSource dataSource, DatabasePlatformSettings settings, ILobHandler lobHandler) { this.dataSource = dataSource; + this.settings = settings; + this.lobHandler = lobHandler; } public DataSource getDataSource() { @@ -52,25 +54,17 @@ public void setRequiresAutoCommitFalseToSetFetchSize( boolean requiresAutoCommitFalseToSetFetchSize) { this.requiresAutoCommitFalseToSetFetchSize = requiresAutoCommitFalseToSetFetchSize; } - - public int getQueryTimeout() { - return queryTimeout; - } - - public void setQueryTimeout(int queryTimeout) { - this.queryTimeout = queryTimeout; + + public void setSettings(DatabasePlatformSettings settings) { + this.settings = settings; } - - public int getFetchSize() { - return fetchSize; - } - - public void setFetchSize(int fetchSize) { - this.fetchSize = fetchSize; + + public DatabasePlatformSettings getSettings() { + return settings; } public ILobHandler getLobHandler() { - return null; + return lobHandler; } public ISqlReadCursor queryForCursor(String sql, ISqlRowMapper mapper, @@ -87,7 +81,7 @@ public T execute(Connection con) throws SQLException { ResultSet rs = null; try { ps = con.prepareStatement(sql); - ps.setQueryTimeout(queryTimeout); + ps.setQueryTimeout(settings.getQueryTimeout()); StatementCreatorUtil.setValues(ps, args); rs = ps.executeQuery(); if (rs.next()) { @@ -110,7 +104,7 @@ public Map execute(Connection con) throws SQLException { ResultSet rs = null; try { ps = con.prepareStatement(sql); - ps.setQueryTimeout(queryTimeout); + ps.setQueryTimeout(settings.getQueryTimeout()); StatementCreatorUtil.setValues(ps, args); rs = ps.executeQuery(); if (rs.next()) { @@ -151,7 +145,7 @@ public Integer execute(Connection con) throws SQLException { PreparedStatement ps = null; try { ps = con.prepareStatement(sql); - ps.setQueryTimeout(queryTimeout); + ps.setQueryTimeout(settings.getQueryTimeout()); if (types != null) { StatementCreatorUtil.setValues(ps, values, types, getLobHandler()); } else { diff --git a/symmetric/symmetric-db/src/test/java/org/jumpmind/db/DbTestUtils.java b/symmetric/symmetric-db/src/test/java/org/jumpmind/db/DbTestUtils.java index 86c99a6b2f..3fbc298d94 100644 --- a/symmetric/symmetric-db/src/test/java/org/jumpmind/db/DbTestUtils.java +++ b/symmetric/symmetric-db/src/test/java/org/jumpmind/db/DbTestUtils.java @@ -3,6 +3,7 @@ import java.io.File; import org.apache.commons.io.FileUtils; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.db.util.DataSourceProperties; abstract public class DbTestUtils { @@ -14,7 +15,7 @@ public static IDatabasePlatform createDatabasePlatform(String name) throws Excep FileUtils.deleteDirectory(new File(String.format("target/%sdbs", name))); DataSourceProperties properties = new DataSourceProperties(String.format("test.%s", name), DatabasePlatformTest.class.getResourceAsStream("/test-db.properties"), name); - return JdbcDatabasePlatformFactory.createNewPlatformInstance(properties.getDataSource()); + return JdbcDatabasePlatformFactory.createNewPlatformInstance(properties.getDataSource(), new DatabasePlatformSettings()); } } diff --git a/symmetric/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/reader/BatchCsvDataReader.java b/symmetric/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/reader/BatchCsvDataReader.java index 5a58d860f7..2593045d0e 100644 --- a/symmetric/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/reader/BatchCsvDataReader.java +++ b/symmetric/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/reader/BatchCsvDataReader.java @@ -21,8 +21,6 @@ public class BatchCsvDataReader implements IDataReader { - protected static final CsvDataRowMapper MAPPER = new CsvDataRowMapper(); - protected String selectSql; protected IDatabasePlatform platform; @@ -41,9 +39,12 @@ public class BatchCsvDataReader implements IDataReader { protected CsvData data; + protected boolean extractOldData = true; + public BatchCsvDataReader(IDatabasePlatform platform, String sql, Map tables, - Batch... batches) { + boolean extractOldData, Batch... batches) { this.selectSql = sql; + this.extractOldData = extractOldData; this.platform = platform; this.tables = tables; this.batchesToSend = new ArrayList(batches.length); @@ -60,8 +61,9 @@ public Batch nextBatch() { if (this.batchesToSend.size() > 0) { this.batch = this.batchesToSend.remove(0); this.statistics.put(batch, new Statistics()); - dataCursor = platform.getSqlTemplate().queryForCursor(selectSql, MAPPER, - new Object[] { batch.getBatchId() }, new int[] { Types.NUMERIC }); + dataCursor = platform.getSqlTemplate().queryForCursor(selectSql, + new CsvDataRowMapper(), new Object[] { batch.getBatchId() }, + new int[] { Types.NUMERIC }); return batch; } else { this.batch = null; @@ -83,7 +85,9 @@ public Table nextTable() { if (data != null) { table = tables.get(data.getAttribute(CsvData.ATTRIBUTE_TABLE_ID)); if (table == null) { - // TODO throw exception + throw new RuntimeException(String.format( + "Table mapping for id of %d was not found", + data.getAttribute(CsvData.ATTRIBUTE_TABLE_ID))); } } return table; @@ -113,12 +117,14 @@ public Map getStatistics() { return statistics; } - static class CsvDataRowMapper implements ISqlRowMapper { + class CsvDataRowMapper implements ISqlRowMapper { public CsvData mapRow(Row row) { CsvData data = new CsvData(); data.putCsvData(CsvData.ROW_DATA, row.getString("ROW_DATA")); data.putCsvData(CsvData.PK_DATA, row.getString("PK_DATA")); - data.putCsvData(CsvData.OLD_DATA, row.getString("OLD_DATA")); + if (extractOldData) { + data.putCsvData(CsvData.OLD_DATA, row.getString("OLD_DATA")); + } data.putAttribute(CsvData.ATTRIBUTE_CHANNEL_ID, row.getString("CHANNEL_ID")); data.putAttribute(CsvData.ATTRIBUTE_TX_ID, row.getString("TRANSACTION_ID")); data.setDataEventType(DataEventType.getEventType(row.getString("EVENT_TYPE"))); diff --git a/symmetric/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/DatabaseWriterPropertyConstants.java b/symmetric/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/DatabaseWriterPropertyConstants.java deleted file mode 100644 index b4d1886c6a..0000000000 --- a/symmetric/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/DatabaseWriterPropertyConstants.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.jumpmind.symmetric.io.data.writer; - -final public class DatabaseWriterPropertyConstants { - - public final static String DATA_LOADER_NO_KEYS_IN_UPDATE = "dont.include.keys.in.update.statement"; - public final static String DATA_LOADER_ENABLE_FALLBACK_UPDATE = "dataloader.enable.fallback.update"; - public final static String DATA_LOADER_ENABLE_FALLBACK_SAVEPOINT = "dataloader.enable.fallback.savepoint"; - public final static String DATA_LOADER_ENABLE_FALLBACK_INSERT = "dataloader.enable.fallback.insert"; - public final static String DATA_LOADER_ALLOW_MISSING_DELETE = "dataloader.allow.missing.delete"; - public final static String DATA_LOADER_MAX_ROWS_BEFORE_COMMIT = "dataloader.max.rows.before.commit"; - public final static String DB_TREAT_DATE_TIME_AS_VARCHAR = "db.treat.date.time.as.varchar.enabled"; - public final static String DATA_LOADER_USE_PKS_FROM_SOURCE = "dataloader.use.pks.from.source"; - - private DatabaseWriterPropertyConstants() { - } - - - -} diff --git a/symmetric/symmetric-server/src/test/java/org/jumpmind/symmetric/db/SqlScriptUnitTest.java b/symmetric/symmetric-server/src/test/java/org/jumpmind/symmetric/db/SqlScriptUnitTest.java index bc9e3b3108..d897119a0f 100644 --- a/symmetric/symmetric-server/src/test/java/org/jumpmind/symmetric/db/SqlScriptUnitTest.java +++ b/symmetric/symmetric-server/src/test/java/org/jumpmind/symmetric/db/SqlScriptUnitTest.java @@ -26,6 +26,7 @@ import org.jumpmind.db.IDatabasePlatform; import org.jumpmind.db.JdbcDatabasePlatformFactory; +import org.jumpmind.db.platform.DatabasePlatformSettings; import org.jumpmind.db.sql.SqlScript; import org.junit.Test; import org.springframework.jdbc.core.JdbcTemplate; @@ -36,7 +37,7 @@ public class SqlScriptUnitTest { @Test public void testSimpleSqlScript() throws Exception { SingleConnectionDataSource ds = getDataSource(); - IDatabasePlatform platform = JdbcDatabasePlatformFactory.createNewPlatformInstance(ds); + IDatabasePlatform platform = JdbcDatabasePlatformFactory.createNewPlatformInstance(ds, new DatabasePlatformSettings()); SqlScript script = new SqlScript(getClass().getResource("sqlscript-simple.sql"), platform.getSqlTemplate()); script.execute(); JdbcTemplate template = new JdbcTemplate(ds); diff --git a/symmetric/symmetric-server/src/test/java/org/jumpmind/symmetric/test/SimpleIntegrationTest.java b/symmetric/symmetric-server/src/test/java/org/jumpmind/symmetric/test/SimpleIntegrationTest.java index 3adb11b4de..c249bb5602 100644 --- a/symmetric/symmetric-server/src/test/java/org/jumpmind/symmetric/test/SimpleIntegrationTest.java +++ b/symmetric/symmetric-server/src/test/java/org/jumpmind/symmetric/test/SimpleIntegrationTest.java @@ -47,7 +47,6 @@ import org.jumpmind.symmetric.db.interbase.InterbaseDbDialect; import org.jumpmind.symmetric.db.oracle.OracleDbDialect; import org.jumpmind.symmetric.db.postgresql.PostgreSqlDbDialect; -import org.jumpmind.symmetric.io.data.writer.DatabaseWriterPropertyConstants; import org.jumpmind.symmetric.model.Node; import org.jumpmind.symmetric.model.NodeChannel; import org.jumpmind.symmetric.model.NodeSecurity; @@ -795,16 +794,15 @@ private boolean turnOnNoKeysInUpdateParameter(boolean newValue) { .getApplicationContext().getBean(Constants.PARAMETER_SERVICE); IParameterService rootParameterService = (IParameterService) AppUtils.find( Constants.PARAMETER_SERVICE, getRootEngine()); - Assert.assertEquals(clientParameterService - .is(DatabaseWriterPropertyConstants.DATA_LOADER_NO_KEYS_IN_UPDATE), - rootParameterService - .is(DatabaseWriterPropertyConstants.DATA_LOADER_NO_KEYS_IN_UPDATE)); + Assert.assertEquals( + clientParameterService.is(ParameterConstants.DATA_LOADER_NO_KEYS_IN_UPDATE), + rootParameterService.is(ParameterConstants.DATA_LOADER_NO_KEYS_IN_UPDATE)); boolean oldValue = clientParameterService - .is(DatabaseWriterPropertyConstants.DATA_LOADER_NO_KEYS_IN_UPDATE); - clientParameterService.saveParameter( - DatabaseWriterPropertyConstants.DATA_LOADER_NO_KEYS_IN_UPDATE, newValue); - rootParameterService.saveParameter( - DatabaseWriterPropertyConstants.DATA_LOADER_NO_KEYS_IN_UPDATE, newValue); + .is(ParameterConstants.DATA_LOADER_NO_KEYS_IN_UPDATE); + clientParameterService.saveParameter(ParameterConstants.DATA_LOADER_NO_KEYS_IN_UPDATE, + newValue); + rootParameterService.saveParameter(ParameterConstants.DATA_LOADER_NO_KEYS_IN_UPDATE, + newValue); return oldValue; } @@ -1066,7 +1064,8 @@ public void testCaseSensitiveTableNames() { "Table name in mixed case was not synced"); } - @Test //(timeout = 120000) + @Test + // (timeout = 120000) public void testSyncShellCommand() throws Exception { logTestRunning(); IDataService rootDataService = AppUtils.find(Constants.DATA_SERVICE, getRootEngine()); @@ -1274,9 +1273,9 @@ public void testMaxRowsBeforeCommit() throws Exception { IParameterService clientParameterService = (IParameterService) getClientEngine() .getApplicationContext().getBean(Constants.PARAMETER_SERVICE); long oldMaxRowsBeforeCommit = clientParameterService - .getLong(DatabaseWriterPropertyConstants.DATA_LOADER_MAX_ROWS_BEFORE_COMMIT); - clientParameterService.saveParameter( - DatabaseWriterPropertyConstants.DATA_LOADER_MAX_ROWS_BEFORE_COMMIT, 5); + .getLong(ParameterConstants.DATA_LOADER_MAX_ROWS_BEFORE_COMMIT); + clientParameterService.saveParameter(ParameterConstants.DATA_LOADER_MAX_ROWS_BEFORE_COMMIT, + 5); int oldCount = clientJdbcTemplate.queryForInt("select count(*) from one_column_table"); IStatisticManager statisticManager = AppUtils.find(Constants.STATISTIC_MANAGER, getClientEngine()); @@ -1303,8 +1302,7 @@ public Object doInConnection(Connection con) throws SQLException, DataAccessExce } while (getClientEngine().pull().wasDataProcessed()); int newCount = clientJdbcTemplate.queryForInt("select count(*) from one_column_table"); Assert.assertEquals(50, newCount - oldCount); - clientParameterService.saveParameter( - DatabaseWriterPropertyConstants.DATA_LOADER_MAX_ROWS_BEFORE_COMMIT, + clientParameterService.saveParameter(ParameterConstants.DATA_LOADER_MAX_ROWS_BEFORE_COMMIT, oldMaxRowsBeforeCommit); }