How To: Configure Packaging Order with ddl Folder Set to DIRECT or DDL_DIRECT
Overview
If you use version 7.15 and later, you can set the ddl folder set to DDL_DIRECT packaging method (instead of DIRECT or CONVERT packaging methods).
The DDL_DIRECT package method allows you to have more control over the processing order of scripts using the DIRECT package method so that scripts with DDL statements run before scripts with data changes that rely on those DDL changes.
You can use ddl_direct as follows:
A
ddl_directfixed folder nameA
ddl_directpackage method set for any other folder. You can set it using the metadata.properties file in any folder where you want to use it:packageMethod=ddl_direct
An example of the new processing order for fixed folders: ddl, ddl_direct, view, function, procedure, package, packageBody, trigger, sql, sql_direct, data_dml.
An example of the new processing order when using flexible folders (where packageMethod is defined in metadata.properties): convert, ddl_direct, storedlogic, sqlfile, direct, data_dml.
The ddl folder now has the option of setting the packageMethod to CONVERT (the default), or DIRECT, or DDL_DIRECT. (Note that DDL_DIRECT is only available in Liquibase Enterprise version 7.15 and higher).
To change any folder to use a different packageMethod than its default, you can set the packageMethod property in the metadata.properties file for that folder.
For Oracle if you change your ddl folder to packageMethod DIRECT or DDL_DIRECT, you can enable the SQL Parser for Oracle project setting for forecasting.
When switching the ddl folder from its default CONVERT package method to the DIRECT package method, the packaging order will be changed. When switching the ddl folder from the default CONVERT package method to the new DDL_DIRECT package method, the packaging order will be the same.
Additional Documentation
For more information, please see:
Ordering Examples
Packaging Order with ddl folder set to CONVERT
If the ddl folder has packageMethod=CONVERT set in its metadata.properties file, the packaging order is:
Commit order
Folder order - ddl (convert), view, function, procedure, package, packagebody, trigger, sql_direct, data_dml
Filename within each folder
Packaging Order with ddl folder set to DDL_DIRECT
If the ddl folder has packageMethod=DDL_DIRECT (available with version 7.15 and higher), the packaging order is:
Commit order
Folder order - ddl (ddl_direct), view, function, procedure, package, packagebody, trigger, sql_direct, data_dml
Filename within each folder
Packaging Order with ddl folder set to DIRECT
If the ddl folder has packageMethod=DIRECT set in its metadata.properties file:
Commit order
Folder order - view, function, procedure, package, packagebody, trigger, ddl (direct), sql_direct, data_dml
Filename within each folder
Alternate Method
Using Folder Order to Control Packaging Order
There is an alternate method to handle the ordering. You can use the custom folderOrder setting to control the packaging order by folder. However, using the folderOrder setting means that the commit time order would no longer be considered when determining the packaging order.
Instructions
Create a metadata.properties file in the parent folder (this folder is usually called
sqlorsql_codefolder):
Add a
folderOrderparameter to the metadata.properties file:
folderOrder=ddl, view, function, procedure, package, packagebody, trigger, sql_direct, data_dmlCommit order will not be taken into consideration with the folderOrder setting.
Packaging Order with folderOrder (set as above)
Folder order - ddl, view, function, procedure, package, packagebody, trigger, sql_direct, data_dml
Filename within each folder
Additional Documentation
More about folderOrder and other packager ordering options: Custom Packaging Order
Copyright © Datical 2012-2020 - Proprietary and Confidential