Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.99.4
-
None
-
None
Description
I'm facing such a situation.
1. I recompile the project without changing anything.
2. I replace old binaries with newly built binaries (derby's repository is kept unchanged)
3. I restart Sqoop2 server, it will trigger an upgrade check.
As the repository version is not incremented, I expect nothing to be update. But I see a SQL error:
Caused by: ERROR 42Z93: Constraints 'FK_SQB_NAME_UNIQUE' and 'FK_SQB_NAME_UNIQUE' have the same set of columns, which is not allowed.
In DerbyRepositoryHandler.java, constraints will be added to repository, if repository version is greater than 3, Sqoop will attempt to add particular constraints repeatedly. I'm afraid this will fail.
// Add unique constraints on job and links for version 4 onwards if (repositoryVersion > 3) { runQuery(QUERY_UPGRADE_TABLE_SQ_JOB_ADD_UNIQUE_CONSTRAINT_NAME, conn); runQuery(QUERY_UPGRADE_TABLE_SQ_LINK_ADD_UNIQUE_CONSTRAINT_NAME, conn); runQuery(QUERY_UPGRADE_TABLE_SQ_CONFIGURABLE_ADD_UNIQUE_CONSTRAINT_NAME, conn); }
So I'm thinking, whether we should do as follows:
1. Increase the current repository version to 5 (instead of 4) and
2. Change the following code
// original if (repositoryVersion > 3) { // proposed if (repositoryVersion <= 4) {