diff --git a/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryHandler.java b/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryHandler.java index 6d076d6b..b648d4de 100644 --- a/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryHandler.java +++ b/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryHandler.java @@ -1638,7 +1638,6 @@ private List loadLinks(PreparedStatement stmt, connectorConfigFetchStatement.setLong(1, connectorId); connectorConfigInputStatement.setLong(1, id); - connectorConfigInputStatement.setLong(3, id); List connectorLinkConfig = new ArrayList(); List fromConfig = new ArrayList(); @@ -1704,7 +1703,6 @@ private List loadJobs(PreparedStatement stmt, driverConfigfetchStmt.setLong(1, driverId); jobInputFetchStmt.setLong(1, id); - jobInputFetchStmt.setLong(3, id); // FROM entity configs List fromConnectorLinkConfig = new ArrayList(); diff --git a/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryInsertUpdateDeleteSelectQuery.java b/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryInsertUpdateDeleteSelectQuery.java index 3dbad01f..43fabb44 100644 --- a/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryInsertUpdateDeleteSelectQuery.java +++ b/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryInsertUpdateDeleteSelectQuery.java @@ -213,7 +213,6 @@ public class CommonRepositoryInsertUpdateDeleteSelectQuery { + " ON " + CommonRepoUtils.escapeColumnName(COLUMN_SQ_LNKI_INPUT) + " = " + CommonRepoUtils.escapeColumnName(COLUMN_SQI_ID) + " AND " + CommonRepoUtils.escapeColumnName(COLUMN_SQ_LNKI_LINK) + " = ?" + " WHERE " + CommonRepoUtils.escapeColumnName(COLUMN_SQI_CONFIG) + " = ?" - + " AND (" + CommonRepoUtils.escapeColumnName(COLUMN_SQ_LNKI_LINK) + " = ?" + " OR " + CommonRepoUtils.escapeColumnName(COLUMN_SQ_LNKI_LINK) + " IS NULL)" + " ORDER BY " + CommonRepoUtils.escapeColumnName(COLUMN_SQI_INDEX); /** @@ -237,7 +236,6 @@ public class CommonRepositoryInsertUpdateDeleteSelectQuery { + " ON " + CommonRepoUtils.escapeColumnName(COLUMN_SQBI_INPUT) + " = " + CommonRepoUtils.escapeColumnName(COLUMN_SQI_ID) + " AND " + CommonRepoUtils.escapeColumnName(COLUMN_SQBI_JOB) + " = ?" + " WHERE " + CommonRepoUtils.escapeColumnName(COLUMN_SQI_CONFIG) + " = ?" - + " AND (" + CommonRepoUtils.escapeColumnName(COLUMN_SQBI_JOB) + " = ? OR " + CommonRepoUtils.escapeColumnName(COLUMN_SQBI_JOB) + " IS NULL)" + " ORDER BY " + CommonRepoUtils.escapeColumnName(COLUMN_SQI_INDEX); /** diff --git a/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepoConstants.java b/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepoConstants.java index 4e1efc2d..41414345 100644 --- a/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepoConstants.java +++ b/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepoConstants.java @@ -43,8 +43,9 @@ public final class DerbyRepoConstants { * 4 - Version 1.99.4 * Changed to FROM/TO design. * 5 - Version 1.99.5 + * 6 - Version 1.99.6 */ - public static final int LATEST_DERBY_REPOSITORY_VERSION = 5; + public static final int LATEST_DERBY_REPOSITORY_VERSION = 6; private DerbyRepoConstants() { // Disable explicit object creation diff --git a/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepositoryHandler.java b/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepositoryHandler.java index 7af912d5..fc1a4b59 100644 --- a/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepositoryHandler.java +++ b/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepositoryHandler.java @@ -299,7 +299,7 @@ public void createOrUpgradeRepository(Connection conn) { derbyUpgradeGenericJdbcConnectorConfigAndInputNames.execute(); } } - + // 1.99.5 release changes if (repositoryVersion < 5) { runQuery(QUERY_UPGRADE_TABLE_SQ_CONFIG_ADD_UNIQUE_CONSTRAINT_NAME_TYPE_AND_CONFIGURABLE_ID, conn); runQuery(QUERY_UPGRADE_TABLE_SQ_INPUT_ADD_UNIQUE_CONSTRAINT_NAME_TYPE_AND_CONFIG_ID, conn); @@ -311,6 +311,10 @@ public void createOrUpgradeRepository(Connection conn) { // create a new table for SQ_INPUT relationships runQuery(QUERY_CREATE_TABLE_SQ_INPUT_RELATION, conn); } + // 1.99.6 release changes + if (repositoryVersion < 6) { + runQuery(QUERY_UPGRADE_ADD_TABLE_SQ_LINK_INPUT_CONSTRAINT_2, conn); + } // last step upgrade the repository version to the latest value in the code upgradeRepositoryVersion(conn); diff --git a/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbySchemaUpgradeQuery.java b/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbySchemaUpgradeQuery.java index 662da9f0..bcdb8d88 100644 --- a/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbySchemaUpgradeQuery.java +++ b/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbySchemaUpgradeQuery.java @@ -325,6 +325,10 @@ public final class DerbySchemaUpgradeQuery { + CommonRepoUtils.getTableName(SCHEMA_SQOOP, TABLE_SQ_LINK_INPUT_NAME) + " ADD CONSTRAINT " + CommonRepoUtils.getConstraintName(SCHEMA_SQOOP, CONSTRAINT_SQ_LNKI_SQ_LNK_NAME) + " " + "FOREIGN KEY (" + CommonRepoUtils.escapeColumnName(COLUMN_SQ_LNKI_LINK) + ") " + "REFERENCES " + CommonRepoUtils.getTableName(SCHEMA_SQOOP, TABLE_SQ_LINK_NAME) + " (" + CommonRepoUtils.escapeColumnName(COLUMN_SQ_LNK_ID) + ")"; + public static final String QUERY_UPGRADE_ADD_TABLE_SQ_LINK_INPUT_CONSTRAINT_2 = "ALTER TABLE " + + CommonRepoUtils.getTableName(SCHEMA_SQOOP, TABLE_SQ_LINK_INPUT_NAME) + " ADD CONSTRAINT " + CommonRepoUtils.getConstraintName(SCHEMA_SQOOP, CONSTRAINT_SQ_LNKI_SQI_NAME) + " " + + "FOREIGN KEY (" + CommonRepoUtils.escapeColumnName(COLUMN_SQ_LNKI_INPUT) + ") " + "REFERENCES " + CommonRepoUtils.getTableName(SCHEMA_SQOOP, TABLE_SQ_INPUT_NAME) + " (" + + CommonRepoUtils.escapeColumnName(COLUMN_SQI_ID) + ")"; // table rename for FORM-> CONFIG public static final String QUERY_UPGRADE_DROP_TABLE_SQ_FORM_CONSTRAINT = "ALTER TABLE " diff --git a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/DerbyTestCase.java b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/DerbyTestCase.java index 5093d119..fea77bad 100644 --- a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/DerbyTestCase.java +++ b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/DerbyTestCase.java @@ -220,6 +220,8 @@ protected void createOrUpgradeSchema(int version) throws Exception { // SQOOP-1804 runQuery(QUERY_UPGRADE_TABLE_SQ_INPUT_ADD_COLUMN_SQI_EDITABLE); runQuery(QUERY_CREATE_TABLE_SQ_INPUT_RELATION); + runQuery(QUERY_UPGRADE_ADD_TABLE_SQ_LINK_INPUT_CONSTRAINT_2); + } // deprecated repository version @@ -523,7 +525,7 @@ protected void loadConnectorAndDriverConfigVersion4() throws Exception { // Connector job (TO) config: 8-11 // Driver JOB config: 12-15 for (int i = 0; i < 4; i++) { - // First config + // First config inputs with config ids 1,3, 5, 7 runInsertQuery("INSERT INTO SQOOP.SQ_INPUT" + "(SQI_NAME, SQI_CONFIG, SQI_INDEX, SQI_TYPE, SQI_STRMASK, SQI_STRLENGTH, SQI_EDITABLE)" + " VALUES('I1', " + (i * 2 + 1) + ", 0, 'STRING', false, 30, 'USER_ONLY')"); @@ -531,7 +533,7 @@ protected void loadConnectorAndDriverConfigVersion4() throws Exception { + "(SQI_NAME, SQI_CONFIG, SQI_INDEX, SQI_TYPE, SQI_STRMASK, SQI_STRLENGTH, SQI_EDITABLE)" + " VALUES('I2', " + (i * 2 + 1) + ", 1, 'MAP', false, 30, 'CONNECTOR_ONLY')"); - // Second config + // Second config inputs with config ids 2, 4,,6 8 runInsertQuery("INSERT INTO SQOOP.SQ_INPUT" + "(SQI_NAME, SQI_CONFIG, SQI_INDEX, SQI_TYPE, SQI_STRMASK, SQI_STRLENGTH, SQI_EDITABLE)" + " VALUES('I3', " + (i * 2 + 2) + ", 0, 'STRING', false, 30, 'USER_ONLY')"); @@ -556,6 +558,7 @@ protected void loadConnectorAndDriverConfig(int version) throws Exception { case 4: case 5: + case 6: loadConnectorAndDriverConfigVersion4(); break; @@ -583,7 +586,7 @@ public void loadConnectionsOrLinks(int version) throws Exception { runQuery("INSERT INTO SQOOP.SQ_CONNECTION(SQN_NAME, SQN_CONNECTOR) " + "VALUES('CB', 1)"); for (String ci : new String[] { "1", "2" }) { - for (String i : new String[] { "1", "3", "13", "15" }) { + for (String i : new String[] { "1", "3", "15" }) { runQuery("INSERT INTO SQOOP.SQ_CONNECTION_INPUT" + "(SQNI_CONNECTION, SQNI_INPUT, SQNI_VALUE) " + "VALUES(" + ci + ", " + i + ", 'Value" + i + "')"); @@ -593,7 +596,9 @@ public void loadConnectionsOrLinks(int version) throws Exception { case 4: case 5: + case 6: // Insert two links - CA and CB + // Connector 1 has one link config runQuery("INSERT INTO SQOOP.SQ_LINK(SQ_LNK_NAME, SQ_LNK_CONFIGURABLE) " + "VALUES('CA', 1)"); runQuery("INSERT INTO SQOOP.SQ_LINK(SQ_LNK_NAME, SQ_LNK_CONFIGURABLE) " + "VALUES('CB', 1)"); @@ -652,6 +657,7 @@ public void loadJobs(int version) throws Exception { case 4: case 5: + case 6: for (String name : new String[] { "JA", "JB", "JC", "JD" }) { runQuery("INSERT INTO SQOOP.SQ_JOB(SQB_NAME, SQB_FROM_LINK, SQB_TO_LINK)" + " VALUES('" + name + index + "', 1, 1)");