You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ddlutils-dev@db.apache.org by "Stefan Huber (JIRA)" <ji...@apache.org> on 2007/02/28 16:11:57 UTC

[jira] Created: (DDLUTILS-159) primary key column change causes exception

primary key column change causes exception
------------------------------------------

                 Key: DDLUTILS-159
                 URL: https://issues.apache.org/jira/browse/DDLUTILS-159
             Project: DdlUtils
          Issue Type: Bug
          Components: Core (No specific database)
         Environment: Windows, SapDB 7.4 and Oracle 8
            Reporter: Stefan Huber
         Assigned To: Thomas Dudziak


I have the folowing table definition:

<?xml version="1.0"?>
<!DOCTYPE database SYSTEM "http://db.apache.org/torque/dtd/database">
  <database name="rmdb">
    <table name="ADDRESS">
      <column name="ID" primaryKey="true" required="true" type="INTEGER"/>
      <column name="TOWN" primaryKey="false" required="false" type="VARCHAR" size="40"/>
    </table>
  </database>

I want to change the name of the primary key column. The new schema definition is:

<?xml version="1.0"?>
<!DOCTYPE database SYSTEM "http://db.apache.org/torque/dtd/database">
  <database name="rmdb">
    <table name="ADDRESS">
      <column name="ADDRESSID" primaryKey="true" required="true" type="INTEGER"/>
      <column name="TOWN" primaryKey="false" required="false" type="VARCHAR" size="40"/>
    </table>
  </database>

DdlUtils throws the following exception in the alter table process:

Exception in thread "main" java.lang.NullPointerException
	at org.apache.ddlutils.alteration.AddPrimaryKeyChange.apply(AddPrimaryKeyChange.java:69)
	at org.apache.ddlutils.platform.SqlBuilder.processChange(SqlBuilder.java:1160)
	at org.apache.ddlutils.platform.sapdb.SapDbBuilder.processTableStructureChanges(SapDbBuilder.java:180)
	at org.apache.ddlutils.platform.SqlBuilder.processTableStructureChanges(SqlBuilder.java:921)
	at org.apache.ddlutils.platform.SqlBuilder.processTableStructureChanges(SqlBuilder.java:797)
	at org.apache.ddlutils.platform.SqlBuilder.processChanges(SqlBuilder.java:576)
	at org.apache.ddlutils.platform.SqlBuilder.alterDatabase(SqlBuilder.java:469)
	at org.apache.ddlutils.platform.PlatformImplBase.getAlterTablesSql(PlatformImplBase.java:756)

The reason is, that an alteration of the table name is not supported via 'alter table' so DdlUtils recreates the table. But in 'SapDbBuilder.processTableStructureChanges' the new primary key is created before  the table is recreated in the super-Method. So 'AddPrimaryKeyChange refers to a column that is not present and throws an exception.

The behaviour is the same with Oracle:

Exception in thread "main" java.lang.NullPointerException
	at org.apache.ddlutils.alteration.AddPrimaryKeyChange.apply(AddPrimaryKeyChange.java:69)
	at org.apache.ddlutils.platform.SqlBuilder.processChange(SqlBuilder.java:1160)
	at org.apache.ddlutils.platform.oracle.Oracle8Builder.processTableStructureChanges(Oracle8Builder.java:488)
	at org.apache.ddlutils.platform.SqlBuilder.processTableStructureChanges(SqlBuilder.java:921)
	at org.apache.ddlutils.platform.SqlBuilder.processTableStructureChanges(SqlBuilder.java:797)
	at org.apache.ddlutils.platform.SqlBuilder.processChanges(SqlBuilder.java:576)
	at org.apache.ddlutils.platform.SqlBuilder.alterDatabase(SqlBuilder.java:469)
	at org.apache.ddlutils.platform.PlatformImplBase.getAlterTablesSql(PlatformImplBase.java:756)


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (DDLUTILS-159) primary key column change causes exception

Posted by "Thomas Dudziak (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DDLUTILS-159?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Thomas Dudziak resolved DDLUTILS-159.
-------------------------------------

    Resolution: Fixed

> primary key column change causes exception
> ------------------------------------------
>
>                 Key: DDLUTILS-159
>                 URL: https://issues.apache.org/jira/browse/DDLUTILS-159
>             Project: DdlUtils
>          Issue Type: Bug
>          Components: Core (No specific database)
>         Environment: Windows, SapDB 7.4 and Oracle 8
>            Reporter: Stefan Huber
>         Assigned To: Thomas Dudziak
>             Fix For: 1.0
>
>
> I have the folowing table definition:
> <?xml version="1.0"?>
> <!DOCTYPE database SYSTEM "http://db.apache.org/torque/dtd/database">
>   <database name="rmdb">
>     <table name="ADDRESS">
>       <column name="ID" primaryKey="true" required="true" type="INTEGER"/>
>       <column name="TOWN" primaryKey="false" required="false" type="VARCHAR" size="40"/>
>     </table>
>   </database>
> I want to change the name of the primary key column. The new schema definition is:
> <?xml version="1.0"?>
> <!DOCTYPE database SYSTEM "http://db.apache.org/torque/dtd/database">
>   <database name="rmdb">
>     <table name="ADDRESS">
>       <column name="ADDRESSID" primaryKey="true" required="true" type="INTEGER"/>
>       <column name="TOWN" primaryKey="false" required="false" type="VARCHAR" size="40"/>
>     </table>
>   </database>
> DdlUtils throws the following exception in the alter table process:
> Exception in thread "main" java.lang.NullPointerException
> 	at org.apache.ddlutils.alteration.AddPrimaryKeyChange.apply(AddPrimaryKeyChange.java:69)
> 	at org.apache.ddlutils.platform.SqlBuilder.processChange(SqlBuilder.java:1160)
> 	at org.apache.ddlutils.platform.sapdb.SapDbBuilder.processTableStructureChanges(SapDbBuilder.java:180)
> 	at org.apache.ddlutils.platform.SqlBuilder.processTableStructureChanges(SqlBuilder.java:921)
> 	at org.apache.ddlutils.platform.SqlBuilder.processTableStructureChanges(SqlBuilder.java:797)
> 	at org.apache.ddlutils.platform.SqlBuilder.processChanges(SqlBuilder.java:576)
> 	at org.apache.ddlutils.platform.SqlBuilder.alterDatabase(SqlBuilder.java:469)
> 	at org.apache.ddlutils.platform.PlatformImplBase.getAlterTablesSql(PlatformImplBase.java:756)
> The reason is, that an alteration of the table name is not supported via 'alter table' so DdlUtils recreates the table. But in 'SapDbBuilder.processTableStructureChanges' the new primary key is created before  the table is recreated in the super-Method. So 'AddPrimaryKeyChange refers to a column that is not present and throws an exception.
> The behaviour is the same with Oracle:
> Exception in thread "main" java.lang.NullPointerException
> 	at org.apache.ddlutils.alteration.AddPrimaryKeyChange.apply(AddPrimaryKeyChange.java:69)
> 	at org.apache.ddlutils.platform.SqlBuilder.processChange(SqlBuilder.java:1160)
> 	at org.apache.ddlutils.platform.oracle.Oracle8Builder.processTableStructureChanges(Oracle8Builder.java:488)
> 	at org.apache.ddlutils.platform.SqlBuilder.processTableStructureChanges(SqlBuilder.java:921)
> 	at org.apache.ddlutils.platform.SqlBuilder.processTableStructureChanges(SqlBuilder.java:797)
> 	at org.apache.ddlutils.platform.SqlBuilder.processChanges(SqlBuilder.java:576)
> 	at org.apache.ddlutils.platform.SqlBuilder.alterDatabase(SqlBuilder.java:469)
> 	at org.apache.ddlutils.platform.PlatformImplBase.getAlterTablesSql(PlatformImplBase.java:756)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (DDLUTILS-159) primary key column change causes exception

Posted by "Thomas Dudziak (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DDLUTILS-159?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Thomas Dudziak updated DDLUTILS-159:
------------------------------------

    Fix Version/s: 1.0

> primary key column change causes exception
> ------------------------------------------
>
>                 Key: DDLUTILS-159
>                 URL: https://issues.apache.org/jira/browse/DDLUTILS-159
>             Project: DdlUtils
>          Issue Type: Bug
>          Components: Core (No specific database)
>         Environment: Windows, SapDB 7.4 and Oracle 8
>            Reporter: Stefan Huber
>         Assigned To: Thomas Dudziak
>             Fix For: 1.0
>
>
> I have the folowing table definition:
> <?xml version="1.0"?>
> <!DOCTYPE database SYSTEM "http://db.apache.org/torque/dtd/database">
>   <database name="rmdb">
>     <table name="ADDRESS">
>       <column name="ID" primaryKey="true" required="true" type="INTEGER"/>
>       <column name="TOWN" primaryKey="false" required="false" type="VARCHAR" size="40"/>
>     </table>
>   </database>
> I want to change the name of the primary key column. The new schema definition is:
> <?xml version="1.0"?>
> <!DOCTYPE database SYSTEM "http://db.apache.org/torque/dtd/database">
>   <database name="rmdb">
>     <table name="ADDRESS">
>       <column name="ADDRESSID" primaryKey="true" required="true" type="INTEGER"/>
>       <column name="TOWN" primaryKey="false" required="false" type="VARCHAR" size="40"/>
>     </table>
>   </database>
> DdlUtils throws the following exception in the alter table process:
> Exception in thread "main" java.lang.NullPointerException
> 	at org.apache.ddlutils.alteration.AddPrimaryKeyChange.apply(AddPrimaryKeyChange.java:69)
> 	at org.apache.ddlutils.platform.SqlBuilder.processChange(SqlBuilder.java:1160)
> 	at org.apache.ddlutils.platform.sapdb.SapDbBuilder.processTableStructureChanges(SapDbBuilder.java:180)
> 	at org.apache.ddlutils.platform.SqlBuilder.processTableStructureChanges(SqlBuilder.java:921)
> 	at org.apache.ddlutils.platform.SqlBuilder.processTableStructureChanges(SqlBuilder.java:797)
> 	at org.apache.ddlutils.platform.SqlBuilder.processChanges(SqlBuilder.java:576)
> 	at org.apache.ddlutils.platform.SqlBuilder.alterDatabase(SqlBuilder.java:469)
> 	at org.apache.ddlutils.platform.PlatformImplBase.getAlterTablesSql(PlatformImplBase.java:756)
> The reason is, that an alteration of the table name is not supported via 'alter table' so DdlUtils recreates the table. But in 'SapDbBuilder.processTableStructureChanges' the new primary key is created before  the table is recreated in the super-Method. So 'AddPrimaryKeyChange refers to a column that is not present and throws an exception.
> The behaviour is the same with Oracle:
> Exception in thread "main" java.lang.NullPointerException
> 	at org.apache.ddlutils.alteration.AddPrimaryKeyChange.apply(AddPrimaryKeyChange.java:69)
> 	at org.apache.ddlutils.platform.SqlBuilder.processChange(SqlBuilder.java:1160)
> 	at org.apache.ddlutils.platform.oracle.Oracle8Builder.processTableStructureChanges(Oracle8Builder.java:488)
> 	at org.apache.ddlutils.platform.SqlBuilder.processTableStructureChanges(SqlBuilder.java:921)
> 	at org.apache.ddlutils.platform.SqlBuilder.processTableStructureChanges(SqlBuilder.java:797)
> 	at org.apache.ddlutils.platform.SqlBuilder.processChanges(SqlBuilder.java:576)
> 	at org.apache.ddlutils.platform.SqlBuilder.alterDatabase(SqlBuilder.java:469)
> 	at org.apache.ddlutils.platform.PlatformImplBase.getAlterTablesSql(PlatformImplBase.java:756)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.