Schema Tool discards the size of decimal column
-----------------------------------------------

                 Key: OPENJPA-603
                 URL: https://issues.apache.org/jira/browse/OPENJPA-603
             Project: OpenJPA
          Issue Type: Bug
          Components: jdbc
    Affects Versions: 1.1.0
         Environment: OpenJPA 1.1.0-SNAPSHOT
version id: openjpa-1.1.0-SNAPSHOT-r422266:653008
Apache svn revision: 422266:653008

os.name: Windows XP
os.version: 5.1
os.arch: x86

java.version: 1.6.0_05
java.vendor: BEA Systems, Inc.
            Reporter: Sandeep Shrivastava


Run the SchemaTool against the following schema defintion file

<?xml version='1.0' encoding='UTF-8'?>
<schemas>
    <schema>
        <table name='t2'>
            <column name='c1' type='integer' type-name='int' size='11'/>
            <column name='c2' type='varchar' size='50'/>
            <column name='c3' type='decimal' size='22'/>
        </table>
    </schema>
</schemas>

Here is the trace log:

985  INFO   [Main Thread] openjpa.Tool - Schema tool running action 'add'.  
This process may take some time.  Enable the org.apache.openjpa.jdbc.Schema 
logging category to see messages about the collection of schema data, and the 
org.apache.openjpa.jdbc.SQL category to see generated SQL commands.
1078  TRACE  [Main Thread] openjpa.jdbc.SQL - <t 1574411, conn 3516148> 
executing stmnt 4762292 CREATE TABLE t2 (c1 int(11), c2 VARCHAR(50), c3 
DECIMAL) TYPE =innodb
1297  TRACE  [Main Thread] openjpa.jdbc.SQL - <t 1574411, conn 3516148> [219 
ms] spent
1297  INFO   [Main Thread] openjpa.Tool - Recording schema changes.
1313  INFO   [Main Thread] openjpa.jdbc.JDBC - Shutting down connection pool.

The size argument is not ignored and database specific defaults apply. In mySQL 
it defaults to decimal(10,0) whereas for db2 the default is decimal(5,0) as per 
the IBM docs.

This is because the DECIMAL type is present in the set of fixedSizeTypeNameSet 
in the DBDictionary class. During the create table sql construction, the 
appendSize method skips adding the size for column types in the 
fixedSizeTypeNameSet.

protected String appendSize(Column col, String typeName) {
        if (fixedSizeTypeNameSet.contains(typeName.toUpperCase()))
            return typeName;
        // Rest of method ...
}

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