include-catalog-in-specification

The include-catalog-in-specification parameter defines whether Liquibase includes the catalog name when determining equality between the compared databases. The default value is false because you may want to compare the objects across two databases even though the catalogs are named differently in different environments.

Uses

If you run the diff command or the diff-changelog command with the include-catalog-in-specification parameter set to true, Liquibase will identify objects using both their object name and the catalog name.

Let’s say you have:

  • database1 and catalog1, which has the table table1
  • database2 and catalog2, which has the table table1

This way, Liquibase shows that there is a difference in the catalog name when executing the diff command with include-catalog-in-specification set to true. For example, an object of catalog1.my_schema.my_table is seen as a different object than catalog2.my_schema.my_table.

However, if you run the diff command and do not specify include-catalog-in-specification, Liquibase will not see any differences and identify only the database objects without checking if the catalog is the same.

Setting the include-catalog-in-specification parameter

You can set include-catalog-in-specification in four ways:

  • In the Liquibase properties file
  • As a global parameter in the CLI
  • As a JVM system property
  • As an environment variable (Liquibase Pro)

Liquibase properties file parameter

In Liquibase 4.1+, add the following to Liquibase properties file:

liquibase.includeCatalogInSpecification: <true|false>

CLI global parameter

In your command line, use a global parameter with a single Liquibase command:

liquibase --include-catalog-in-specification=<true|false> diff --changelog-file=dbchangelog.xml

Java system property

In your command line, use the JAVA_OPTS Environment Variable to set a JVM system property:

Mac/Linux syntax:

JAVA_OPTS=-Dliquibase.includeCatalogInSpecification=<true|false>

Windows syntax:

set JAVA_OPTS=-Dliquibase.includeCatalogInSpecification=<true|false>

Note: To use a Liquibase command alongside JAVA_OPTS, add && liquibase <command> to the end of your input.

Environment variable (Liquibase Pro)

In Liquibase Pro, set an environment variable:

Mac/Linux syntax:

LIQUIBASE_INCLUDE_CATALOG_IN_SPECIFICATION=<true|false>

Windows syntax:

set LIQUIBASE_INCLUDE_CATALOG_IN_SPECIFICATION=<true|false>

Note: These environment variable commands only apply to the current shell. If you need to pass an environment variable to a child process without affecting the parent process, you can use the export command on Mac/Linux or the setx command on Windows.