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 2009/08/12 14:33:14 UTC

[jira] Updated: (DDLUTILS-251) primary key column change causes exception (#2)

     [ https://issues.apache.org/jira/browse/DDLUTILS-251?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stefan Huber updated DDLUTILS-251:
----------------------------------

    Description: 
If you add a column to an existing primary key, database updates fails with NullPointerException:

java.lang.NullPointerException
	at org.apache.ddlutils.alteration.AddPrimaryKeyChange.apply(AddPrimaryKeyChange.java)
	at org.apache.ddlutils.platform.SqlBuilder.processChange(SqlBuilder.java)
	at org.apache.ddlutils.platform.mssql.MSSqlBuilder.processTableStructureChanges(MSSqlBuilder.java)
	at org.apache.ddlutils.platform.SqlBuilder.processTableStructureChanges(SqlBuilder.java)
	at org.apache.ddlutils.platform.SqlBuilder.processTableStructureChanges(SqlBuilder.java)
	at org.apache.ddlutils.platform.SqlBuilder.processChanges(SqlBuilder.java)
	at org.apache.ddlutils.platform.mssql.MSSqlBuilder.processChanges(MSSqlBuilder.java)
	at org.apache.ddlutils.platform.SqlBuilder.alterDatabase(SqlBuilder.java)


Orignial table definition:

    <table name="DISPLAYNAMES">
        <column name="CLASSNAME" primaryKey="true" required="true" type="VARCHAR" size="200"
                autoIncrement="false"/>
        <column name="FIRMWAREID" primaryKey="true" required="true" type="INTEGER" size="10"
                autoIncrement="false"/>
        <column name="LANGUAGE" primaryKey="true" required="true" type="CHAR" size="5"
                autoIncrement="false"/>
        <column name="DISPLAYNAME" primaryKey="false" required="true" type="VARCHAR" size="200"
                autoIncrement="false"/>
    </table>

New table definition with additional primary key column INSTANCENR:

    <table name="DISPLAYNAMES">
        <column name="CLASSNAME" primaryKey="true" required="true" type="VARCHAR" size="200"
                autoIncrement="false"/>
        <column name="FIRMWAREID" primaryKey="true" required="true" type="INTEGER" size="10"
                autoIncrement="false"/>
        <column name="LANGUAGE" primaryKey="true" required="true" type="CHAR" size="5"
                autoIncrement="false"/>
        <column name="INSTANCENR" primaryKey="true" required="true" type="INTEGER" size="10"
                autoIncrement="false" default="-1"/>
        <column name="DISPLAYNAME" primaryKey="false" required="true" type="VARCHAR" size="1000"
                autoIncrement="false"/>
    </table>

It's a problem similar to bug DDLUTILS-159 (already resolved for Oracle, SAP DB and MySQL)

  was:
Primary key changes don't work with SQLServer database.
It's the same problem described in DDLUTILS-159 and already resolved for Oracle, SAP DB and MySQL.


> primary key column change causes exception (#2)
> -----------------------------------------------
>
>                 Key: DDLUTILS-251
>                 URL: https://issues.apache.org/jira/browse/DDLUTILS-251
>             Project: DdlUtils
>          Issue Type: Bug
>          Components: Core - SqlServer
>    Affects Versions: 1.0
>         Environment: Windows XP
>            Reporter: Stefan Huber
>            Assignee: Thomas Dudziak
>
> If you add a column to an existing primary key, database updates fails with NullPointerException:
> java.lang.NullPointerException
> 	at org.apache.ddlutils.alteration.AddPrimaryKeyChange.apply(AddPrimaryKeyChange.java)
> 	at org.apache.ddlutils.platform.SqlBuilder.processChange(SqlBuilder.java)
> 	at org.apache.ddlutils.platform.mssql.MSSqlBuilder.processTableStructureChanges(MSSqlBuilder.java)
> 	at org.apache.ddlutils.platform.SqlBuilder.processTableStructureChanges(SqlBuilder.java)
> 	at org.apache.ddlutils.platform.SqlBuilder.processTableStructureChanges(SqlBuilder.java)
> 	at org.apache.ddlutils.platform.SqlBuilder.processChanges(SqlBuilder.java)
> 	at org.apache.ddlutils.platform.mssql.MSSqlBuilder.processChanges(MSSqlBuilder.java)
> 	at org.apache.ddlutils.platform.SqlBuilder.alterDatabase(SqlBuilder.java)
> Orignial table definition:
>     <table name="DISPLAYNAMES">
>         <column name="CLASSNAME" primaryKey="true" required="true" type="VARCHAR" size="200"
>                 autoIncrement="false"/>
>         <column name="FIRMWAREID" primaryKey="true" required="true" type="INTEGER" size="10"
>                 autoIncrement="false"/>
>         <column name="LANGUAGE" primaryKey="true" required="true" type="CHAR" size="5"
>                 autoIncrement="false"/>
>         <column name="DISPLAYNAME" primaryKey="false" required="true" type="VARCHAR" size="200"
>                 autoIncrement="false"/>
>     </table>
> New table definition with additional primary key column INSTANCENR:
>     <table name="DISPLAYNAMES">
>         <column name="CLASSNAME" primaryKey="true" required="true" type="VARCHAR" size="200"
>                 autoIncrement="false"/>
>         <column name="FIRMWAREID" primaryKey="true" required="true" type="INTEGER" size="10"
>                 autoIncrement="false"/>
>         <column name="LANGUAGE" primaryKey="true" required="true" type="CHAR" size="5"
>                 autoIncrement="false"/>
>         <column name="INSTANCENR" primaryKey="true" required="true" type="INTEGER" size="10"
>                 autoIncrement="false" default="-1"/>
>         <column name="DISPLAYNAME" primaryKey="false" required="true" type="VARCHAR" size="1000"
>                 autoIncrement="false"/>
>     </table>
> It's a problem similar to bug DDLUTILS-159 (already resolved for Oracle, SAP DB and MySQL)

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