changelog-sync-to-tag-sql

changelog-sync-to-tag-sql is a helper command that produces the raw SQL that Liquibase would run when using the changelog-sync-to-tag command to mark all undeployed changesets associated with the specified tag as executed in your database.

Uses

The changelog-sync-to-tag-sql command is typically used when you want to inspect the SQL Liquibase will use to baseline a new database environment.

It is best practice to inspect any SQL that Liquibase would run when using the changelog-sync-to-tag command so you can review any changes the command would make to your database before running it. The changelog-sync-to-tag command marks all changesets starting with the first changeset at the top of the changelog file and moving down to the changeset up to and including the tag.

Note: If you don’t have any tag specified in your changelog file, add it by using the tagDatabase Change Type as follows:

<changeSet id="13.1" author="liquibase">
    <tagDatabase tag="version_2.0"/>
</changeSet>

Running the changelog-sync-to-tag-sql command

Before running the changelog-sync-to-tag-sql command, specify the driver, classpath, and URL in the Liquibase properties file. For more information, see Specifying Properties in a Connection Profile. You can also specify these properties in your command line.

Next, run the changelog-sync-to-tag-sql command:

liquibase --changelog-file=mychangelog.xml changelog-sync-to-tag-sql version1

Note: Enter the name of the changelog and the tag that you want to use in place of mychangelog.xml and version1.

changelog-sync-to-tag-sql global attributes

Tip: For best results, specify all commands and parameters with the --kebab-case format in the CLI. If your preference is camelCase, it will still work in the CLI.

Attribute Definition Requirements
--changelog-file

The root changelog

Required
--url

The JDBC database connection URL

Required
--username

The database username

Required*
--password

The database password

Required*
--output-file*

Specifies the file path to where the SQL output will be written

Optional

*If not specified, the changelog-sync-to-tag-sql output goes to STDOUT.

Note: The username and password attributes are not required for connections and systems which use alternate means of authentication.

changelog-sync-to-tag-sql command attributes

Attribute Definition Requirements
tag

The tag identifying which tagged changesets in the changelog to evaluate.

Required

changelog-sync-to-tag-sql example output

When successful, the changelog-sync-to-tag-sql command produces the following output:

Liquibase Version: 4.9.1

-- *********************************************************************
-- SQL to add all changesets to database history table
-- *********************************************************************
-- Change Log: changelog.h2.sql
-- Ran at: 5/13/22, 10:17 AM
-- Against: DBUSER@jdbc:h2:tcp://localhost:9090/mem:dev
-- Liquibase version: 4.9.1
-- *********************************************************************

-- Lock Database
UPDATE PUBLIC.DATABASECHANGELOGLOCK SET LOCKED = TRUE, LOCKEDBY = 'DESKTOP-SQVSSV2 (192.168.1.179)', LOCKGRANTED = NOW() WHERE ID = 1 AND LOCKED = FALSE;

-- Release Database Lock
UPDATE PUBLIC.DATABASECHANGELOGLOCK SET LOCKED = FALSE, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1;

Liquibase command 'changelog-sync-to-tag-sql' was executed successfully.