[ 
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)

Reply via email to