Liquibase 3.3 and Oracle INTEGER gives NUMBER(10)

Hi

I just realized that liquibase (3.3.0 here) converts oracle (12.2) type INTEGER to NUMBER(10) instead of at least NUMBER(38).

Oracle INTEGER is seen internaly as NUMBER(*,0) which certainly means NUMBER(127,0). For sure it is upper than NUMBER(38).

So I don’t see at all why using liquibase it is stucked to NUMBER(10), which is too small and is a problem for me.

Of course I can update my tables to change the type. But I think this is a bug. Is there some workaround about this?

Regards

Frederic

Sorry I didn’t searched for previous messages :

http://forum.liquibase.org/topic/oracle-and-integer-types

=> NUMBER(10)

http://forum.liquibase.org/topic/mapping-for-integer-on-oracle-changed-between-liquibase-2-and-3

=> FixVersion 3.4.0 !

3.4.0 is not yet released! Too bad for me. :wink:

Liquibase uses NUMBER(10) to try to keep INTEGER sort of consistent with other databases. How to best handle the mappings are going to get a good overhaul soon. You can use biginteger as a type that will give you a larger integer size, or just use type=“NUMBER(*,0)” directly.

If you want to override it you can create you own IntType extension with different logic in toDatabaseType(), or you could use to fix up the generated NUMBER(10) for oracle.

Nathan