[
https://issues.apache.org/jira/browse/SQOOP-1625?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Qian Xu updated SQOOP-1625:
---------------------------
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:
{code}
Caused by: ERROR 42Z93: Constraints 'FK_SQB_NAME_UNIQUE' and
'FK_SQB_NAME_UNIQUE' have the same set of columns, which is not allowed.
{code}
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.
{code}
// 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);
}
{code}
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
{code}
// original
if (repositoryVersion > 3) {
// proposed
if (repositoryVersion <= 4) {
{code}
was:
I'm facing a SQL error, while Sqoop2 tries to add an existing constraint again.
It happens when I recompile Sqoop project and restart Sqoop server. Here is the
error message:
{code}
Caused by: ERROR 42Z93: Constraints 'FK_SQB_NAME_UNIQUE' and
'FK_SQB_NAME_UNIQUE' have the same set of columns, which is not allowed.
{code}
In DerbyRepositoryHandler.java, constraints will be added to repository, if
repository version is greater than 3. According to the code, the code can be
executed at every Sqoop server startup. Obviously, the code cannot be
executed twice, so Sqoop server cannot start up.
{code}
// 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);
}
{code}
Compare with other code of repository version upgrade, after version number is
increased, related code never executed again. But the highlighted code is not.
Shall we
1. Increase the current repository version to 5 (instead of 4) and
2. Change the following code
{code}
if (repositoryVersion > 3) {
// Change to
if (repositoryVersion <= 4) {
{code}
> Repository upgrade issue
> ------------------------
>
> Key: SQOOP-1625
> URL: https://issues.apache.org/jira/browse/SQOOP-1625
> Project: Sqoop
> Issue Type: Bug
> Affects Versions: 1.99.4
> Reporter: Qian Xu
>
> 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:
> {code}
> Caused by: ERROR 42Z93: Constraints 'FK_SQB_NAME_UNIQUE' and
> 'FK_SQB_NAME_UNIQUE' have the same set of columns, which is not allowed.
> {code}
> 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.
> {code}
> // 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);
> }
> {code}
> 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
> {code}
> // original
> if (repositoryVersion > 3) {
> // proposed
> if (repositoryVersion <= 4) {
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)