How does Liquibase handle data types?

When you specify a data type in the type field of a Change Type or tag, such as the <column type="XYZ"> field, Liquibase evaluates the type to send it to your database.

Liquibase implements many generic types natively. When necessary, Liquibase converts the data type you specify into a different type preferred by your database.

For example, if you specify the data type BOOLEAN in your changelog, Liquibase passes it to a Snowflake database as a BOOLEAN. However, on a PostgreSQL database, Liquibase converts it to a BIT.

Data type support by database

The following table shows how each database platform handles Liquibase's generic data types:

  • Each row represents a database supported by Liquibase

  • For each database, data types are organized into two groups:

    • Supported as-is: These Liquibase generic types work natively without conversion

    • With specific mappings: These show which database-specific types Liquibase converts each generic type to

To determine how a specific Liquibase data type interacts with your database, locate your platform and database combination in the table and review both sections.

Platform/database

Supported types

Amazon DynamoDB/Amazon DynamoDB

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

Databricks/Databricks

With specific mappings:

ARRAY: ARRAY

ARRAY: ARRAY

BIGINT: BIGINT

BLOB: BINARY

BOOLEAN: BOOLEAN

CHAR: CHAR

CLOB: CLOB

CURRENCY: CURRENCY

DATE: DATE

DATETIME: TIMESTAMP

DECIMAL: DECIMAL

DOUBLE: DOUBLE

FLOAT: FLOAT

INT: INT

MEDIUMINT: MEDIUMINT

NCHAR: NCHAR

NUMBER: NUMBER

NVARCHAR: NVARCHAR

SMALLINT: SMALLINT

TIME: TIME

TIMESTAMP: TIMESTAMP

TINYINT: TINYINT

UUID: UUID

VARCHAR: STRING

XML: XML

Google BigQuery/Google BigQuery

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, X

IBM DB2/IBM DB2 LUW

With specific mappings:

BIGINT: BIGINT

BLOB: BINARY, BLOB, VARBINARY

BOOLEAN: BOOLEAN, SMALLINT

CHAR: CHARCLOB: CLOB

CURRENCY: DECIMAL

DATE: DATE

DATETIME: TIMESTAMP

DECIMAL: DECIMAL

DOUBLE: DOUBLE

FLOAT: FLOAT

INT: INTEGER

MEDIUMINT: MEDIUMINT

NCHAR: NCHAR

NUMBER: NUMERIC

NVARCHAR: NVARCHAR

SMALLINT: SMALLINT

TIME: TIME

TIMESTAMP: TIMESTAMP

TINYINT: SMALLINT

UUID: CHAR

VARCHAR: VARCHAR

XML: XML

IBM DB2 zOS/IBM DB2 zOS

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

MariaDB/MariaDB Server

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

MariaDB SkySQL/MariaDB Sky SQL

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

Microsoft Azure SQL Database/ Microsoft SQL Server

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

Microsoft Azure SQL Managed Instance/Microsoft SQL Server

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

Microsoft SQL Server/Microsoft SQL Server

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

Microsoft SQL Server (AWS RDS)/Microsoft SQL Server

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

Microsoft SQL Server (Google Cloud SQL)/Microsoft SQL Server

With specific mappings:

BIGINT: BIGINT

BLOB: BINARY, IMAGE, VARBINARY

BOOLEAN: BIT

CHAR: CHAR

CLOB: NVARCHAR, VARCHAR

CURRENCY: MONEY, SMALLMONEY

DATE: DATE

DATETIME: DATETIME, DATETIME2

DECIMAL: DECIMAL

DOUBLE: FLOAT

FLOAT: FLOAT, REAL

INT: INT

MEDIUMINT: MEDIUMINT

NCHAR: NCHAR

NUMBER: NUMERIC

NVARCHAR: NVARCHAR

SMALLINT: SMALLINT

TIME: TIME

TIMESTAMP: DATETIME2, TIMESTAMP

TINYINT: TINYINT

UUID: UNIQUEIDENTIFIER

VARCHAR: VARCHAR

XML: TEXT, XML

MongoDB/MongoDB Atlas

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

MongoDB/MongoDB Community Server

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

MongoDB/MongoDB Enterprise Server

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

MySQL (AWS RDS)/MySQL

With specific mappings:

BIGINT: BIGINT

BLOB: BLOB

BOOLEAN: TINYINT(1)

CHAR: CHAR

CLOB: CLOB

CURRENCY: DECIMAL

DATE: DATE

DATETIME: DATETIME

DECIMAL: DECIMAL

DOUBLE: DOUBLE

FLOAT: FLOAT

INT: INT

MEDIUMINT: MEDIUMINT

NCHAR: NCHAR

NUMBER: NUMBER

NVARCHAR: NVARCHAR

SMALLINT: SMALLINT

TIME: TIME

TIMESTAMP: TIMESTAMP

TINYINT: TINYINT

UUID: CHAR

VARCHAR: VARCHAR

XML: XML

MySQL/MySQL Server

With specific mappings:

BIGINT: BIGINT

BLOB: BINARY, BLOB, LONGBLOB, MEDIUMBLOB, TINYBLOB, VARBINARYBOOLEAN: BIT, TINYINT

CHAR: CHARCLOB: LONGTEXT, MEDIUMTEXT, TEXT, TINYTEXT

CURRENCY: DECIMAL

DATE: DATE

DATETIME: DATETIME

DECIMAL: DECIMAL

DOUBLE: DOUBLE, DOUBLE PRECISION

FLOAT: REAL

INT: INT

MEDIUMINT: MEDIUMINT

NCHAR: NCHAR

NUMBER: NUMERIC

NVARCHAR: NVARCHAR

SMALLINT: SMALLINT

TIME: TIME

TIMESTAMP: TIMESTAMP

TINYINT: TINYINT

UUID: CHAR

VARCHAR: VARCHAR

XML: LONGTEXT

MySQL (AWS Aurora)/MySQL

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

MySQL (AWS RDS)/MySQL

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

MySQL (Azure Database)/MySQL

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

MySQL (Google Cloud SQL)/MySQL

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

Oracle/Oracle Database

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

Oracle/Oracle Autonomous Database

With specific mappings:

BIGINT: NUMBER

BLOB: BFILE, BLOB, RAW

BOOLEAN: BOOLEAN, NUMBER

CHAR: CHAR

CLOB: CLOB, NCLOB

CURRENCY: NUMBERDATE: DATE

DATETIME: DATETIME, TIMESTAMP

DECIMAL: DECIMAL

DOUBLE: DOUBLE PRECISION

FLOAT: FLOAT

INT: INTEGER

MEDIUMINT: MEDIUMINT

NCHAR: NCHAR

NUMBER: NUMBER

NVARCHAR: NVARCHAR2

SMALLINT: NUMBER

TIME: DATE

TIMESTAMP: TIMESTAMP

TINYINT: NUMBER

UUID: RAW

VARCHAR: VARCHAR2

XML: XMLTYPE

Oracle (AWS RDS)/Oracle

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

PostgreSQL/PostgreSQL

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

PostgreSQL (Amazon Redshift)/PostgreSQL

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

PostgreSQL (AWS Aurora)/PostgreSQL

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

PostgreSQL (AWS RDS)/PostgreSQL

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

PostgreSQL (Azure Database Flexible Server)/PostgreSQL

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

PostgreSQL (EnterpriseDB)/PostgreSQL

Supported as-is:

BIGINT, BLOB, BOOLEAN, CHAR, CLOB, CURRENCY, DATE, DATETIME, DECIMAL, DOUBLE, FLOAT, INT, MEDIUMINT, NCHAR, NUMBER, NVARCHAR, SMALLINT, TIME, TIMESTAMP, TINYINT, UUID, VARCHAR, XML

PostgreSQL (Google Cloud SQL)/PostgreSQL

With specific mappings:

BIGINT: BIGINT, BIGSERIAL

BLOB: BYTEA, OID

BOOLEAN: BIT

CHAR: CHARACTER

CLOB: TEXT

CURRENCY: DECIMAL

DATE: DATE

DATETIME: TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITHOUT TIME ZONE, TIMESTAMP WITHOUT TIME ZONE

DECIMAL: DECIMAL

DOUBLE: DOUBLE

FLOAT: REAL

INT: INT, INTEGER, SERIAL

MEDIUMINT: MEDIUMINT

NCHAR: NCHAR

NUMBER: NUMERIC

NVARCHAR: VARCHAR

SMALLINT: SMALLINT, SMALLSERIAL

TIME: TIME

TIMESTAMP: TIMESTAMP

TINYINT: SMALLINT

UUID: CHAR

VARCHAR: CHARACTER

XML: TEXT, XML

Snowflake/Snowflake

With specific mappings:

BIGINT: BIGINT

BINARY: BINARY, VARBINARY

BLOB: BLOB

BOOLEAN: BOOLEAN

CHAR: CHAR

CLOB: VARCHAR

CURRENCY: DECIMAL

DATE: DATE

DATETIME: DATETIME

DECIMAL: DECIMAL

DOUBLE: FLOAT

FLOAT: FLOAT

INT: INT

MEDIUMINT: MEDIUMINT

NCHAR: NCHAR

NUMBER: NUMBER

NVARCHAR: NVARCHAR

SMALLINT: SMALLINT

TEXT: TEXT

TIME: TIME

TIMESTAMP: TIMESTAMP

TIMESTAMP_NTZ: TIMESTAMP_NTZ

TINYINT: TINYINT

UUID: CHAR

VARCHAR: VARCHAR

XML: XML