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 name

  • A 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:

  1. Commit order

  2. Folder order - ddl (convert), view, function, procedure, package, packagebody, trigger, sql_direct, data_dml

  3. 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:

  1. Commit order

  2. Folder order - ddl (ddl_direct), view, function, procedure, package, packagebody, trigger, sql_direct, data_dml

  3. 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:

  1. Commit order

  2. Folder order - view, function, procedure, package, packagebody, trigger, ddl (direct), sql_direct, data_dml

  3. 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 or sql_code folder):

Parent directory for placing metadata.properties file
  • 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)

  1. Folder order - ddl, view, function, procedure, package, packagebody, trigger, sql_direct, data_dml

  2. Filename within each folder

Additional Documentation

More about folderOrder and other packager ordering options:

Copyright © Datical 2012-2020 - Proprietary and Confidential