## Environment
**Liquibase Version**: 4.0.0

**Database Vendor & Version**: DB2 for i (AS400 iSeries)

## Description
When dropping all tables, Liquibase tries to lookup foreign key constraints. It executes a database specific query to do this.
It has a specific query for DB2, but this only works for DB2 UDB, and not for DB2 for i.

## Steps To Reproduce
List the steps to reproduce the behavior.
Execute a dropAll against a DB2 for i database. 

## Actual Behavior
An exception occurs:
`Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in com.essers.legplanning.domain.support.internal.DomainSupportConfiguration: Invocation of init method failed; nested exception is liquibase.excep
tion.DatabaseException: liquibase.command.CommandExecutionException: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: com.ibm.as400.access.AS400JDBCSQLSyntaxErrorException: [SQL0204] REFERENCES in SYSCAT type *FILE not found.
`

## Expected/Desired Behavior
No exception occurs and tables are dropped.

## Additional Context
This worked on 3.6.3, but not anymore on 4.0.0. The reason for this is some internal Liquibase refactoring, where dropping the tables is now done differently. See StandardLockService.destroy [https://github.com/liquibase/liquibase/commit/7fa3d5305ef3a9b2cd7d7e79bde48a8cae82755c](https://github.com/liquibase/liquibase/commit/7fa3d5305ef3a9b2cd7d7e79bde48a8cae82755c)

A similar check has already built in to retrieve unique constraints. See [https://liquibase.jira.com/browse/CORE-1915](https://liquibase.jira.com/browse/CORE-1915)
An extra db2 check was built in (see [https://github.com/liquibase/liquibase/commit/b54ee3faee00c7d9a99036dc711094556b50298e)](https://github.com/liquibase/liquibase/commit/b54ee3faee00c7d9a99036dc711094556b50298e))
{{ if (database.getDatabaseProductName().startsWith("DB2 UDB for AS/400"))}}

## Test Requirements (Internal Liquibase QA)
This issue is a special case where we do not have access to the database platform in order to perform testing. Our validations will be to ensure the changes have not impacted other platforms.

#### Manual Test Requirements
Setup: Populate the database with tables with a foreign key. 

_Verify successful drop-all of tables associated by a foreign key._

* Oracle
* MSSQL
* MySQL
* Postgres
* Maria DB

#### Automated Test Requirements
* Verify all existing functional tests pass on the build server.
* Implement hasForeignKey and doesNothaveForeignKey methods for the DataBaseInstance class.
  * MySQLInstance.java
  * MariaDbInstance.java
  * MsSqlInstance.java
  * OracleInstance.java
  * NOTE: PostgresInstance.java is already implemented.
* Add a new test to DropAllTests.java that validates drop-all when a foreign key exists.
  * Test without a Pro license
  * Test CLI only (no Maven)
  * Test all supported platforms (multidb test)
  * Use the new format of CLI commands (LiquibaseNewCli) to construct Liquibase command line.
  * Make sure to add labels to new foreign key changesets added to the update changelog.
    * labels=”lb-683, community, addFk”



┆Issue is synchronized with this [Jira Bug](https://datical.atlassian.net/browse/LB-683) by [Unito](https://www.unito.io)
┆Fix Versions: Community 4.x

}
                @Override
                public String getSchemaKey(CachedRow row) {
                    return row.getString("TABLE_SCHEM");
                }
                @Override
                public List<CachedRow> fastFetchQuery() throws SQLException, DatabaseException {
                    CatalogAndSchema catalogAndSchema = new CatalogAndSchema(catalogName, schemaName).customize(database);
                    if (database instanceof OracleDatabase) {
                        return queryOracle(catalogAndSchema, table);
                    } else if (database instanceof MSSQLDatabase) {
                        return queryMssql(catalogAndSchema, table);
                    } else if (database instanceof Db2zDatabase) {
                        return queryDb2Zos(catalogAndSchema, table);
                    } else if ( database instanceof PostgresDatabase) {
                        return queryPostgres(catalogAndSchema, table);
                    }
                    String catalog = ((AbstractJdbcDatabase) database).getJdbcCatalogName(catalogAndSchema);
                    String schema = ((AbstractJdbcDatabase) database).getJdbcSchemaName(catalogAndSchema);
                    return extract(databaseMetaData.getTables(catalog, schema, ((table == null) ?
                        SQL_FILTER_MATCH_ALL : table), new String[]{"TABLE"}));
                }
                @Override
                public List<CachedRow> bulkFetchQuery() throws SQLException, DatabaseException {
                    CatalogAndSchema catalogAndSchema = new CatalogAndSchema(catalogName, schemaName).customize(database);
                    if (database instanceof OracleDatabase) {
                        return queryOracle(catalogAndSchema, null);
                    } else if (database instanceof MSSQLDatabase) {
                        return queryMssql(catalogAndSchema, null);
                    } else if (database instanceof Db2zDatabase) {