Oracle: NUMBER data type size specification is deployed with a precision specifier even though precision isn't specified in the change log

Description

SETUP

You'll need 2 empty databases to perform this test. Below they are referred to as schema1 & schema2

TO REPRODUCE

  1. Use the SQL statement below to create a test table in schema1

  2. execute generateChangeLog against schema1

  3. perform an update against schema2 using the change log generated in the previous step

  4. diff the 2 databases using schema1 as the reference and schema2 as the target

EXPECTED RESULT

The databases are identical, provided they were empty when the test is started

ACTUAL RESULT

The datatypes of both columns in the test table are being caught in the diff indicating that the datatype has been modified. Here's a snip from the output:

Changed Column(s):
NUMBERTEST.COLUMN1
type changed from 'NUMBER(38)' to 'NUMBER(38, 0)'
NUMBERTEST.COLUMN2
type changed from 'NUMBER(38)' to 'NUMBER(38, 0)'

If you look at the two instances of the NUMBERTEST table in SQL Developer, you'll see that the table created in schema1 with the SQL script does not have any sort of size specification, but the instance of NUMBERTEST in schema2 has size and precision specified. It appears that Liquibase is adding information to the datatype when the SQL is generated?

Environment

CLIENT: Windows 7 x64, Java 7, Liquibase 3.1
SERVER: Oracle 11 XE

Status

Assignee

Unassigned

Reporter

Peter Pickerill

Labels

None

Fix versions

Affects versions

Priority

Major
Configure