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

Reply via email to