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

"      pg_catalog.pg_class AS ct " +
                                    "      JOIN pg_catalog.pg_attribute AS a ON (ct.oid = a.attrelid) " +
                                    "      JOIN pg_catalog.pg_namespace AS n ON " +
                                    "          (ct.relnamespace = n.oid) " +
                                    "      JOIN pg_catalog.pg_index AS i ON (a.attrelid = i.indrelid) " +
                                    "      JOIN pg_catalog.pg_class AS ci ON (ci.oid = i.indexrelid) " +
                                    "    WHERE " +
                                    "      true " +
                                    "      AND n.nspname = '" + ((AbstractJdbcDatabase) database).getJdbcSchemaName(catalogAndSchema) + "' " +
                                    "      AND ct.relname = '" + table + "' " +
                                    "      AND i.indisprimary" +
                                    "  ) " +
                                    "    AS result " +
                                    "WHERE " +
                                    "  result.a_attnum = (result.keys).x " +
                                    "ORDER BY " +
                                    "  result.table_name, result.pk_name, result.key_seq";
                            try {
                                return executeAndExtract(sql, database);
                            } catch (DatabaseException e) {
                                throw new SQLException(e);
                            }
                        } else {
                            return extract(
                                    databaseMetaData.getPrimaryKeys(
                                            ((AbstractJdbcDatabase) database).getJdbcCatalogName(catalogAndSchema),
                                            ((AbstractJdbcDatabase) database).getJdbcSchemaName(catalogAndSchema),
                                            table
                                    )
                            );