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 907978fc..7ba851cb 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 @@ -204,8 +204,11 @@ public int detectRepositoryVersion(Connection conn) { */ @Override public void createOrUpgradeRepository(Connection conn) { - int repositoryVersion = detectRepositoryVersion(conn); + if (repositoryVersion == DerbyRepoConstants.LATEST_DERBY_REPOSITORY_VERSION) { + return; + } + if(repositoryVersion <= 0) { runQuery(QUERY_CREATE_SCHEMA_SQOOP, conn); runQuery(QUERY_CREATE_TABLE_SQ_CONNECTOR, conn); diff --git a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestRespositorySchemaUpgrade.java b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestRespositorySchemaUpgrade.java index 928c34a6..934056f4 100644 --- a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestRespositorySchemaUpgrade.java +++ b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestRespositorySchemaUpgrade.java @@ -45,12 +45,24 @@ public void testHasLatestRepositoryVersion() throws Exception { } @Test - public void testCreateorUpdateRepositorySchema() throws Exception { + public void testCreatorUpdateRepositorySchema() throws Exception { assertFalse(handler.isRespositorySuitableForUse(getDerbyDatabaseConnection())); handler.createOrUpgradeRepository(getDerbyDatabaseConnection()); assertTrue(handler.isRespositorySuitableForUse(getDerbyDatabaseConnection())); } + @Test + public void testDoubleUpdateRepositorySchema() throws Exception { + // Setup + assertFalse(handler.isRespositorySuitableForUse(getDerbyDatabaseConnection())); + handler.createOrUpgradeRepository(getDerbyDatabaseConnection()); + assertTrue(handler.isRespositorySuitableForUse(getDerbyDatabaseConnection())); + + // Exercise and verify + handler.createOrUpgradeRepository(getDerbyDatabaseConnection()); + assertTrue(handler.isRespositorySuitableForUse(getDerbyDatabaseConnection())); + } + @Test(expected = SQLIntegrityConstraintViolationException.class) public void testUpgradeVersion4WithNonUniqueJobNameFailure() throws Exception { super.createOrUpgradeSchema(4);