Stored logic exclusion in command line?

when I specify specific schemas command line of Liquibase generatechangelog command , can I also have the generatechangelog to exclude stored logic thats under that schema?

1 Like

It’s possible with maven or Liquibase command line if you’re using Liquibase version > 3.3.2.

Take a look at the release notes

Liquibase 3.3.2 is officially released. It is primarily a bugfix release, but has one major new feature: object diffChangeLog/generateChangeLog object filtering. includeObjects/excludeObjects logic

You can now set an includeObjects or excludeObjects paramter on the command line or Ant. For maven, the parameteres are diffExcludeObjects and diffIncludeObjects. The format for these parameters are:

An object name (actually a regexp) will match any object whose name matches the regexp.

A type:name syntax that matches the regexp name for objects of the given type
If you want multiple expressions, comma separate them
The type:name logic will be applied to the tables containing columns, indexes, etc.






NOTE: name comparison is case sensitive. If you want insensitive logic, use the (?i) regexp flag.



Example Filters:





“table_name” will match a table called “table_name” but not “other_table” or “TABLE_NAME”
“(i?)table_name” will match a table called “table_name” and “TABLE_NAME”
“table_name” will match all columns in the table table_name
“table:table_name” will match a table called table_name but not a column named table_name
“table:table_name, column:*._lock” will match a table called table_name and all columns that end with “_lock”

So try using excludeObjects or includeObjects parameters with generateChangeLog command

UPDATE

This command may do the trick (for a MySQL database):

liquibase 
--changeLogFile=change.xml 
--username=username 
--password=password 
--driver=com.mysql.cj.jdbc.Driver 
--url=jdbc:mysql://localhost:3306/mydatabase
--classpath=mysql-connector-java-8.0.18.jar 
--includeObjects="table:abc.*" 
generateChangeLog

Regards,
Tabby