## 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

}
                    }
                    return pkInfo;
                }
                private String mssqlSql(CatalogAndSchema catalogAndSchema, String tableName) throws DatabaseException {
                        String sql;
                        sql =
                                "SELECT " +
                                        "DB_NAME() AS [TABLE_CAT], " +
                                        "[s].[name] AS [TABLE_SCHEM], " +
                                        "[t].[name] AS [TABLE_NAME], " +
                                        "[c].[name] AS [COLUMN_NAME], " +
                                        "CASE [ic].[is_descending_key] WHEN 0 THEN N'A' WHEN 1 THEN N'D' END AS [ASC_OR_DESC], " +
                                        "[ic].[key_ordinal] AS [KEY_SEQ], " +
                                        "[kc].[name] AS [PK_NAME] " +
                                        "FROM [sys].[schemas] AS [s] " +
                                        "INNER JOIN [sys].[tables] AS [t] " +
                                        "ON [t].[schema_id] = [s].[schema_id] " +
                                        "INNER JOIN [sys].[key_constraints] AS [kc] " +
                                        "ON [kc].[parent_object_id] = [t].[object_id] " +
                                        "INNER JOIN [sys].[indexes] AS [i] " +
                                        "ON [i].[object_id] = [kc].[parent_object_id] " +
                                        "AND [i].[index_id] = [kc].[unique_index_id] " +
                                        "INNER JOIN [sys].[index_columns] AS [ic] " +
                                        "ON [ic].[object_id] = [i].[object_id] " +
                                        "AND [ic].[index_id] = [i].[index_id] " +
                                        "INNER JOIN [sys].[columns] AS [c] " +
                                        "ON [c].[object_id] = [ic].[object_id] " +
                                        "AND [c].[column_id] = [ic].[column_id] " +
                                        "WHERE [s].[name] = N'" + database.escapeStringForDatabase(catalogAndSchema.getSchemaName()) + "' " +