NoSelect

The NoSelect Custom Policy Checks prevents SELECT statements from appearing in your Liquibase Pro changelog.

regex: (?i:select )

Step-by-Step

Note: These steps describe how to create the custom policy check. It does not exist by default in Liquibase Pro.

  1. Enter this command into the CLI: 
    liquibase checks customize --check-name=SqlUserDefinedPatternCheck
  2. Give your check a short name for easier identification. In this example we will title the check:
    NoSelect
  3. Set the Severity to return a code of 0-4 when triggered.
    Options: 'INFO'=0, 'MINOR'=1, 'MAJOR'=2, 'CRITICAL'=3, 'BLOCKER'=4

  4. Set the SEARCH_STRING to this valid regular expression:
    (?i:select )

  5. Set the MESSAGE for when a match for regular expression <SEARCH_STRING> is found in a Changeset:

    Example: Error! SELECT statements not allowed.

  6. Set STRIP_COMMENTS to true if you want to remove the comments from the output.

    The regex custom policy check is created successfully.

Sample Failing Scripts

Copy
SELECT * FROM DATABASECHANGELOG;
Copy
SELECT * from dbo.DATABASECHANGELOG;
Copy
SELECT * from [dbo].[DATABASECHANGELOG];
Copy
SELECT FIRST_NAME, LAST_NAME, CITY from EMPLOYEES;

Sample Error Message

Copy
CHANGELOG CHECKS
----------------
Checks completed validation of the changelog and found the following issues:

Check Name:         Check for specific patterns in sql (NoSelect)
Changeset ID:       sales
Changeset Filepath: changeLogs/1_tables/02_insertTable1.sql
Check Severity:     INFO (Return code: 4)
Message:            Error! SELECT statements not allowed.