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

Reply via email to