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_direct
fixed folder nameA
ddl_direct
package 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
sql
orsql_code
folder):
Add a
folderOrder
parameter to the metadata.properties file:
folderOrder=ddl, view, function, procedure, package, packagebody, trigger, sql_direct, data_dml
Commit 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
Related content
Copyright © Datical 2012-2020 - Proprietary and Confidential