From ffba45a48f359e237adfbb949550ce030f2b15dc Mon Sep 17 00:00:00 2001 From: eegeek Date: Mon, 21 Oct 2013 19:05:38 +0000 Subject: [PATCH] 0001448: Provide global parameter to specify that BSH database writer filters will handle missing tables --- .../db/platform/mssql/MsSqlDdlReader.java | 61 +++++++++++-------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/symmetric-jdbc/src/main/java/org/jumpmind/db/platform/mssql/MsSqlDdlReader.java b/symmetric-jdbc/src/main/java/org/jumpmind/db/platform/mssql/MsSqlDdlReader.java index dff644d780..78d8159b50 100644 --- a/symmetric-jdbc/src/main/java/org/jumpmind/db/platform/mssql/MsSqlDdlReader.java +++ b/symmetric-jdbc/src/main/java/org/jumpmind/db/platform/mssql/MsSqlDdlReader.java @@ -38,6 +38,7 @@ import org.jumpmind.db.platform.DatabaseMetaDataWrapper; import org.jumpmind.db.platform.DdlException; import org.jumpmind.db.platform.IDatabasePlatform; +import org.jumpmind.db.sql.SqlException; /* * Reads a database model from a Microsoft Sql Server database. @@ -63,35 +64,45 @@ public MsSqlDdlReader(IDatabasePlatform platform) { @Override protected Table readTable(Connection connection, DatabaseMetaDataWrapper metaData, Map values) throws SQLException { - String tableName = (String) values.get("TABLE_NAME"); - - for (int idx = 0; idx < KNOWN_SYSTEM_TABLES.length; idx++) { - if (KNOWN_SYSTEM_TABLES[idx].equals(tableName)) { - return null; + + try { + String tableName = (String) values.get("TABLE_NAME"); + + for (int idx = 0; idx < KNOWN_SYSTEM_TABLES.length; idx++) { + if (KNOWN_SYSTEM_TABLES[idx].equals(tableName)) { + return null; + } } - } - - Table table = super.readTable(connection, metaData, values); - - if (table != null) { - // Sql Server does not return the auto-increment status via the - // database metadata - determineAutoIncrementFromResultSetMetaData(connection, table, table.getColumns()); - - // TODO: Replace this manual filtering using named pks once they are - // available - // This is then probably of interest to every platform - for (int idx = 0; idx < table.getIndexCount();) { - IIndex index = table.getIndex(idx); - - if (index.isUnique() && existsPKWithName(metaData, table, index.getName())) { - table.removeIndex(idx); - } else { - idx++; + + Table table = super.readTable(connection, metaData, values); + + if (table != null) { + // Sql Server does not return the auto-increment status via the + // database metadata + determineAutoIncrementFromResultSetMetaData(connection, table, table.getColumns()); + + // TODO: Replace this manual filtering using named pks once they are + // available + // This is then probably of interest to every platform + for (int idx = 0; idx < table.getIndexCount();) { + IIndex index = table.getIndex(idx); + + if (index.isUnique() && existsPKWithName(metaData, table, index.getName())) { + table.removeIndex(idx); + } else { + idx++; + } } } + return table; + } catch (SqlException e) { + if (e.getMessage().contains("does not exist")) { + return null; + } else { + throw e; + } } - return table; + } @Override