private void retrieveForeignKeysUsingSql(final InformationSchemaViews informationSchemaViews)
      throws SchemaCrawlerSQLException {
    final String fkSql = informationSchemaViews.getForeignKeysSql();
    LOGGER.log(Level.FINER, String.format("Executing SQL to retrieve foreign keys: %n%s", fkSql));

    final NamedObjectList<MutableForeignKey> foreignKeys = new NamedObjectList<>();
    final Connection connection = getDatabaseConnection();
    try (final Statement statement = connection.createStatement();
        final MetadataResultSet results = new MetadataResultSet(executeSql(statement, fkSql)); ) {
      createForeignKeys(results, foreignKeys);
    } catch (final SQLException e) {
      throw new SchemaCrawlerSQLException("Could not retrieve foreign keys from SQL:\n" + fkSql, e);
    }
  }