copy

Note: This is a Liquibase Pro command, so you need a Liquibase Pro License Key to use it.
The copy
subcommand copies a customizable check so that you can run the same check multiple times with different command arguments.
Uses
If you want to run the same check with different values, use copy
to make a new version with new values. If enabled, both checks will be run in the same execution.
For example, you can make two copies of the check that scans SQL:
- SQL should not contain
COPY DATABASE
- SQL should not contain
ALTER USER
Liquibase does not allow you to copy static checks because they do not include customization options, and having the same check is redundant.
Note: To view a list of available checks, run liquibase checks show
.
Syntax
The command is interactive, and you need to follow the CLI output messages to execute it:
- Run the command specifying your values:
- Enter the name of the check copy using alphanumeric characters. Also, the name of the copy should differ from the original name.
liquibase checks copy --check-name=TableColumnLimit
Note: If you have a checks settings file customized for a specific environment or project, you need to pass that using the --checks-settings-file
parameter. If you do not include this parameter, Liquibase uses the default settings file: liquibase.checks-settings.conf
. See Use the Checks Settings Configuration File.
The command adds the copy of a check to the checks settings file. To execute the check, use the run subcommand.
Command arguments
The following table identifies parameters that are accepted or required by the copy
subcommand. If the Default column states "Required," it is required to run the command successfully. If it states "Null," it is an optional command argument. Each command argument helps you narrow down the liquibase checks copy
command to ensure that only very specific content is affected by the command.
Tip: For best results, specify all commands and parameters in the --kebab-case
format in the CLI. If your preference is camelCase, it also works in the CLI.
Command Arg | Default | Syntax | Description |
---|---|---|---|
checkName (String) |
Required |
CLI: Property: Environment Variable: |
Use this to specify the short name of the check you want to target with one of the following subcommands:
|
autoUpdate (String) |
null |
CLI: Property: Environment Variable: |
Allows automatic backup and updating of liquibase.checks.conf file when new quality checks are available. Options: [on|off] |
checksSettingsFile (String) |
null |
CLI: Property: Environment Variable: |
Relative or fully qualified path to a configuration file for checks execution |

copy
example output
Starting Liquibase at 13:18:02 (version 4.9.1 #1978 built at 2022-03-28 19:39+0000)
Liquibase Version: 4.9.1
Give your check a short name for easier identification (up to 64 alpha-numeric characters only) [TableColumnLimit1]:
TableColumnLimit
Invalid value: 'TableColumnLimit': A check with the short name 'TableColumnLimit' already exists
Give your check a short name for easier identification (up to 64 alpha-numeric characters only) [TableColumnLimit1]:
TCL
New check 'TCL' created from 'TableColumnLimit'
Set the Severity to return a code of 0-4 when triggered. (options: 'INFO'|0, 'MINOR'|1, 'MAJOR'|2, 'CRITICAL'|3, 'BLOCKER'|4)? [MINOR]:
0
Set 'MAX_COLUMNS' (options: positive numeric value) [50]:
20
Customization complete. Review the table below to confirm your changes.
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| # | Check Name | Short Name | Description | Enabled | Customization | Severity |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 10 | Warn on Detection of 'GRANT' | SqlGrantWarn | This check warns a user when | true | None | 1 |
| | Statements | | SQL contains 'GRANT' | | | |
| | | | statements so that they can | | | |
| | | | ensure that the privilege | | | |
| | | | being granted won't lead to | | | |
| | | | security issues. | | | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 20 | Warn on Detection of 'REVOKE' | SqlRevokeWarn | This check warns a user when | true | None | 1 |
| | Statements | | SQL contains 'REVOKE' | | | |
| | | | statements so that they can | | | |
| | | | ensure that the privilege | | | |
| | | | being revoked won't lead to | | | |
| | | | data access and dependency | | | |
| | | | issues. | | | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 30 | Warn when 'DROP TABLE' | ChangeDropTableWarn | This check warns a user when a | true | None | 1 |
| | detected | | table is being dropped so that | | | |
| | | | they can ensure that dropping | | | |
| | | | the table won't lead to | | | |
| | | | unintentional loss of data. | | | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 40 | Warn when 'DROP COLUMN' | ChangeDropColumnWarn | This check warns a user when a | true | None | 1 |
| | detected | | column is being dropped so | | | |
| | | | that they can ensure that | | | |
| | | | dropping the column won't lead | | | |
| | | | to unintentional loss of data. | | | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 50 | Warn when 'MODIFY column' | ModifyDataTypeWarn | This check warns a user when a | true | None | 1 |
| | detected | | change will result in | | | |
| | | | modification of a data type so | | | |
| | | | they can ensure that modifying | | | |
| | | | the data type won't lead to | | | |
| | | | unintentional loss of data | | | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 60 | Check for specific patterns in | SqlUserDefinedPatternCheck | This check scans raw SQL for | false | SEARCH_STRING = null | 1 |
| | sql | | the presence of specific | | MESSAGE = A match for regular | |
| | | | patterns and warns the user | | expression SEARCH_STRING was | |
| | | | when they are found. | | detected in Changeset | |
| | | | | | CHANGESET. | |
| | | | | | STRIP_COMMENTS = true | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 70 | Check Table Column Count | 1234 | Ensures that no table has more | true | MAX_COLUMNS = 5 | 1 |
| | | | than a threshold number of | | | |
| | | | columns. | | | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 70 | Check Table Column Count | TCL | Ensures that no table has more | true | MAX_COLUMNS = 20 | 0 |
| | | | than a threshold number of | | | |
| | | | columns. | | | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 70 | Check Table Column Count | TableColumnLimit | Ensures that no table has more | true | MAX_COLUMNS = 50 | 1 |
| | | | than a threshold number of | | | |
| | | | columns. | | | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 80 | Object name pattern match | ObjectNameMustMatch | This check confirms the listed | false | OPERATOR = STARTS_WITH | 1 |
| | | | object names conform to the | | SEARCH_STRING = null | |
| | | | supplied pattern. | | OBJECT_TYPES = null | |
| | | | | | CASE_SENSITIVE = true | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 85 | Object name pattern not match | ObjectNameMustNotMatch | This check confirms the listed | false | OPERATOR = STARTS_WITH | 1 |
| | | | object names do not match the | | SEARCH_STRING = null | |
| | | | supplied pattern. | | OBJECT_TYPES = null | |
| | | | | | CASE_SENSITIVE = true | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 90 | Warn on Grant of Specific | SqlGrantSpecificPrivsWarn | This check warns a user when | false | PRIVILEGE_LIST = null | 1 |
| | Privileges | | changeset includes or | | | |
| | | | generates sql that grants | | | |
| | | | specific privileges to a user | | | |
| | | | or role | | | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 100 | Warn when 'TRUNCATE TABLE' | ChangeTruncateTableWarn | This check warns a user when a | true | None | 1 |
| | detected | | table is being truncated so | | | |
| | | | that they can ensure that | | | |
| | | | truncating the table won't | | | |
| | | | lead to unintentional loss of | | | |
| | | | data. | | | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 110 | Warn on Detection of grant | SqlGrantOptionWarn | This check warns a user when | true | None | 1 |
| | that contains 'WITH GRANT | | SQL contains 'GRANT' | | | |
| | OPTION' | | statements that include the | | | |
| | | | 'WITH GRANT OPTION' clause so | | | |
| | | | that they can ensure that the | | | |
| | | | privilege being granted won't | | | |
| | | | lead to security issues | | | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 130 | Warn on Detection of grant | SqlGrantAdminWarn | This check warns a user when | true | None | 1 |
| | that contains 'WITH ADMIN | | SQL contains 'GRANT' | | | |
| | OPTION' | | statements that include the | | | |
| | | | 'WITH ADMIN OPTION' clause so | | | |
| | | | that they can ensure that the | | | |
| | | | privilege being granted won't | | | |
| | | | lead to security issues | | | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 160 | Rollback Required for | RollbackRequired | This check triggers when a | true | None | 1 |
| | Changeset | | changeset does not have a | | | |
| | | | rollback defined. | | | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 170 | Changesets Must Have a Label | ChangesetLabelCheck | This check enforces the | true | None | 1 |
| | Assigned | | Liquibase recommendation that | | | |
| | | | labels be assigned to each | | | |
| | | | changeset to provide better | | | |
| | | | deployment control and to | | | |
| | | | enhance traceability of | | | |
| | | | efforts across changesets. | | | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 173 | Changesets Must Have a Context | ChangesetContextCheck | This check enforces the | true | None | 1 |
| | Assigned | | Liquibase recommendation that | | | |
| | | | contexts be assigned to each | | | |
| | | | changeset to provide better | | | |
| | | | deployment control and to | | | |
| | | | enhance traceability of | | | |
| | | | efforts across changesets. | | | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
| 176 | Changesets Must Have a Comment | ChangesetCommentCheck | This check enforces the | true | None | 1 |
| | Assigned | | Liquibase recommendation that | | | |
| | | | comments be added to each | | | |
| | | | changeset to document the | | | |
| | | | purpose of a changeset for | | | |
| | | | other/future consumers of this | | | |
| | | | changelog | | | |
+-----+--------------------------------+----------------------------+--------------------------------+---------+--------------------------------+----------+
Liquibase command 'checks copy' was executed successfully.