Repository: sqoop Updated Branches: refs/heads/sqoop2 5d4dd08e2 -> 6be57ae7e
SQOOP-2588: Sqoop2: CommonRepositoryHandler#inUseLink only check if link is used in the from side of a job (Dian Fu via Jarek Jarcec Cecho) Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/6be57ae7 Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/6be57ae7 Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/6be57ae7 Branch: refs/heads/sqoop2 Commit: 6be57ae7e6650138678342502fe0a70ffc932f14 Parents: 5d4dd08 Author: Jarek Jarcec Cecho <[email protected]> Authored: Thu Sep 24 12:57:04 2015 -0700 Committer: Jarek Jarcec Cecho <[email protected]> Committed: Thu Sep 24 12:57:04 2015 -0700 ---------------------------------------------------------------------- .../repository/common/CommonRepositoryHandler.java | 1 + .../CommonRepositoryInsertUpdateDeleteSelectQuery.java | 12 +++++++++--- .../apache/sqoop/repository/derby/DerbyTestCase.java | 2 +- .../apache/sqoop/repository/derby/TestLinkHandling.java | 2 ++ .../integration/repository/mysql/TestLinkHandling.java | 8 ++++++-- .../repository/postgresql/TestLinkHandling.java | 4 +++- 6 files changed, 22 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/sqoop/blob/6be57ae7/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryHandler.java ---------------------------------------------------------------------- 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 9c45fe7..1b0caf7 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 @@ -448,6 +448,7 @@ public abstract class CommonRepositoryHandler extends JdbcRepositoryHandler { try (PreparedStatement stmt = conn.prepareStatement(crudQueries.getStmtSelectJobsForLinkCheck())) { stmt.setString(1, linkName); + stmt.setString(2, linkName); try (ResultSet rs = stmt.executeQuery()) { // Should be always valid in case of count(*) query http://git-wip-us.apache.org/repos/asf/sqoop/blob/6be57ae7/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryInsertUpdateDeleteSelectQuery.java ---------------------------------------------------------------------- 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 aa872ab..144b002 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 @@ -397,12 +397,18 @@ public class CommonRepositoryInsertUpdateDeleteSelectQuery { // DML: Check if there are jobs for given link private static final String STMT_SELECT_JOBS_FOR_LINK_CHECK = - "SELECT" - + " count(*)" + "SELECT SUM(CNT) FROM (" + + " SELECT count(*) as CNT" + " FROM " + CommonRepoUtils.getTableName(SCHEMA_SQOOP, TABLE_SQ_JOB_NAME) + " INNER JOIN " + CommonRepoUtils.getTableName(SCHEMA_SQOOP, TABLE_SQ_LINK_NAME) + " ON " + CommonRepoUtils.escapeColumnName(COLUMN_SQB_FROM_LINK) + " = " + CommonRepoUtils.escapeColumnName(COLUMN_SQ_LNK_ID) - + " WHERE " + CommonRepoUtils.escapeColumnName(COLUMN_SQ_LNK_NAME) + " = ? "; + + " WHERE " + CommonRepoUtils.escapeColumnName(COLUMN_SQ_LNK_NAME) + " = ? " + + " UNION ALL" + + " SELECT count(*) as CNT" + + " FROM " + CommonRepoUtils.getTableName(SCHEMA_SQOOP, TABLE_SQ_JOB_NAME) + + " INNER JOIN " + CommonRepoUtils.getTableName(SCHEMA_SQOOP, TABLE_SQ_LINK_NAME) + + " ON " + CommonRepoUtils.escapeColumnName(COLUMN_SQB_TO_LINK) + " = " + CommonRepoUtils.escapeColumnName(COLUMN_SQ_LNK_ID) + + " WHERE " + CommonRepoUtils.escapeColumnName(COLUMN_SQ_LNK_NAME) + " = ? ) as JOB_COUNT"; //DML: Select all jobs private static final String STMT_SELECT_JOB_ALL = http://git-wip-us.apache.org/repos/asf/sqoop/blob/6be57ae7/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/DerbyTestCase.java ---------------------------------------------------------------------- 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 cd4c76c..5fd510d 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 @@ -668,7 +668,7 @@ abstract public class DerbyTestCase { case 7: 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)"); + + name + index + "', 1, 2)"); } // Odd IDs inputs have values http://git-wip-us.apache.org/repos/asf/sqoop/blob/6be57ae7/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestLinkHandling.java ---------------------------------------------------------------------- diff --git a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestLinkHandling.java b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestLinkHandling.java index 40bac8b..e6cb9fb 100644 --- a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestLinkHandling.java +++ b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestLinkHandling.java @@ -210,10 +210,12 @@ public class TestLinkHandling extends DerbyTestCase { loadLinksForLatestVersion(); assertFalse(handler.inUseLink("CA", getDerbyDatabaseConnection())); + assertFalse(handler.inUseLink("CB", getDerbyDatabaseConnection())); loadJobsForLatestVersion(); assertTrue(handler.inUseLink("CA", getDerbyDatabaseConnection())); + assertTrue(handler.inUseLink("CB", getDerbyDatabaseConnection())); } @Test http://git-wip-us.apache.org/repos/asf/sqoop/blob/6be57ae7/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/TestLinkHandling.java ---------------------------------------------------------------------- diff --git a/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/TestLinkHandling.java b/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/TestLinkHandling.java index 72fa981..db17124 100644 --- a/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/TestLinkHandling.java +++ b/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/TestLinkHandling.java @@ -217,16 +217,20 @@ public class TestLinkHandling extends MySqlTestCase { // Create job and submission and make that job in use to make sure link is // in use. MLink linkA = handler.findLink(LINK_A_NAME, provider.getConnection()); + MLink linkB = handler.findLink(LINK_B_NAME, provider.getConnection()); MJob job = getJob("Job-A", handler.findConnector("A", provider.getConnection()), - handler.findConnector("B", provider.getConnection()), linkA, - handler.findLink(LINK_B_NAME, provider.getConnection())); + handler.findConnector("B", provider.getConnection()), + linkA, + linkB); handler.createJob(job, provider.getConnection()); MSubmission submission = getSubmission(job, SubmissionStatus.RUNNING); handler.createSubmission(submission, provider.getConnection()); assertTrue(handler.inUseLink(linkA.getName(), provider.getConnection())); + assertTrue(handler.inUseLink(linkB.getName(), + provider.getConnection())); } @Test http://git-wip-us.apache.org/repos/asf/sqoop/blob/6be57ae7/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/TestLinkHandling.java ---------------------------------------------------------------------- diff --git a/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/TestLinkHandling.java b/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/TestLinkHandling.java index 498f18f..24de195 100644 --- a/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/TestLinkHandling.java +++ b/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/TestLinkHandling.java @@ -212,16 +212,18 @@ public class TestLinkHandling extends PostgresqlTestCase { // Create job and submission and make that job in use to make sure link is in use. MLink linkA = handler.findLink(LINK_A_NAME, provider.getConnection()); + MLink linkB = handler.findLink(LINK_B_NAME, provider.getConnection()); MJob job = getJob("Job-A", handler.findConnector("A", provider.getConnection()), handler.findConnector("B", provider.getConnection()), linkA, - handler.findLink(LINK_B_NAME, provider.getConnection())); + linkB); handler.createJob(job, provider.getConnection()); MSubmission submission = getSubmission(job, SubmissionStatus.RUNNING); handler.createSubmission(submission, provider.getConnection()); assertTrue(handler.inUseLink(linkA.getName(), provider.getConnection())); + assertTrue(handler.inUseLink(linkB.getName(), provider.getConnection())); } @Test
