src/main/user-impl/java/com/mysql/cj/jdbc/DatabaseMetaDataInformationSchema.java [440:460]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        StringBuilder query = new StringBuilder("SELECT DISTINCT");
        query.append(chooseBasedOnDatabaseTerm(() -> " A.REFERENCED_TABLE_SCHEMA AS PKTABLE_CAT, NULL AS PKTABLE_SCHEM,",
                () -> " A.CONSTRAINT_CATALOG AS PKTABLE_CAT, A.REFERENCED_TABLE_SCHEMA AS PKTABLE_SCHEM,"));                // PKTABLE_CAT, PKTABLE_SCHEM
        query.append(" A.REFERENCED_TABLE_NAME AS PKTABLE_NAME,");                                                          // PKTABLE_NAME
        query.append(" A.REFERENCED_COLUMN_NAME AS PKCOLUMN_NAME,");                                                        // PKCOLUMN_NAME
        query.append(chooseBasedOnDatabaseTerm(() -> " A.TABLE_SCHEMA AS FKTABLE_CAT, NULL AS FKTABLE_SCHEM,",
                () -> " A.TABLE_CATALOG AS FKTABLE_CAT, A.TABLE_SCHEMA AS FKTABLE_SCHEM,"));                                // FKTABLE_CAT, FKTABLE_SCHEM
        query.append(" A.TABLE_NAME AS FKTABLE_NAME,");                                                                     // FKTABLE_NAME
        query.append(" A.COLUMN_NAME AS FKCOLUMN_NAME,");                                                                   // FKCOLUMN_NAME
        query.append(" A.ORDINAL_POSITION AS KEY_SEQ,");                                                                    // KEY_SEQ
        appendUpdateRuleClause(query).append(" AS UPDATE_RULE,");                                                           // UPDATE_RULE
        appendDeleteRuleClause(query).append(" AS DELETE_RULE,");                                                           // DELETE_RULE
        query.append(" A.CONSTRAINT_NAME AS FK_NAME,");                                                                     // FK_NAME
        query.append(" TC.CONSTRAINT_NAME AS PK_NAME,");                                                                    // PK_NAME
        query.append(" ").append(importedKeyNotDeferrable).append(" AS DEFERRABILITY");                                     // DEFERRABILITY
        query.append(" FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE A JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS B");
        query.append(" USING (TABLE_SCHEMA, TABLE_NAME, CONSTRAINT_NAME)");
        appendOptionalRefContraintsJoin(query);
        query.append(" LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC ON (A.REFERENCED_TABLE_SCHEMA = TC.TABLE_SCHEMA");
        query.append(" AND A.REFERENCED_TABLE_NAME = TC.TABLE_NAME AND TC.CONSTRAINT_TYPE IN ('UNIQUE', 'PRIMARY KEY'))");
        query.append(" WHERE B.CONSTRAINT_TYPE = 'FOREIGN KEY'");
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



src/main/user-impl/java/com/mysql/cj/jdbc/DatabaseMetaDataInformationSchema.java [499:519]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        StringBuilder query = new StringBuilder("SELECT DISTINCT");
        query.append(chooseBasedOnDatabaseTerm(() -> " A.REFERENCED_TABLE_SCHEMA AS PKTABLE_CAT, NULL AS PKTABLE_SCHEM,",
                () -> " A.CONSTRAINT_CATALOG AS PKTABLE_CAT, A.REFERENCED_TABLE_SCHEMA AS PKTABLE_SCHEM,"));                // PKTABLE_CAT, PKTABLE_SCHEM
        query.append(" A.REFERENCED_TABLE_NAME AS PKTABLE_NAME,");                                                          // PKTABLE_NAME
        query.append(" A.REFERENCED_COLUMN_NAME AS PKCOLUMN_NAME,");                                                        // PKCOLUMN_NAME
        query.append(chooseBasedOnDatabaseTerm(() -> " A.TABLE_SCHEMA AS FKTABLE_CAT, NULL AS FKTABLE_SCHEM,",
                () -> " A.TABLE_CATALOG AS FKTABLE_CAT, A.TABLE_SCHEMA AS FKTABLE_SCHEM,"));                                // FKTABLE_CAT, FKTABLE_SCHEM
        query.append(" A.TABLE_NAME AS FKTABLE_NAME,");                                                                     // FKTABLE_NAME
        query.append(" A.COLUMN_NAME AS FKCOLUMN_NAME,");                                                                   // FKCOLUMN_NAME
        query.append(" A.ORDINAL_POSITION AS KEY_SEQ,");                                                                    // KEY_SEQ
        appendUpdateRuleClause(query).append(" AS UPDATE_RULE,");                                                           // UPDATE_RULE
        appendDeleteRuleClause(query).append(" AS DELETE_RULE,");                                                           // DELETE_RULE
        query.append(" A.CONSTRAINT_NAME AS FK_NAME,");                                                                     // FK_NAME
        query.append(" TC.CONSTRAINT_NAME AS PK_NAME,");                                                                    // PK_NAME
        query.append(" ").append(importedKeyNotDeferrable).append(" AS DEFERRABILITY");                                     // DEFERRABILITY
        query.append(" FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE A JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS B");
        query.append(" USING (TABLE_SCHEMA, TABLE_NAME, CONSTRAINT_NAME)");
        appendOptionalRefContraintsJoin(query);
        query.append(" LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC ON (A.REFERENCED_TABLE_SCHEMA = TC.TABLE_SCHEMA");
        query.append(" AND A.REFERENCED_TABLE_NAME = TC.TABLE_NAME AND TC.CONSTRAINT_TYPE IN ('UNIQUE', 'PRIMARY KEY'))");
        query.append(" WHERE B.CONSTRAINT_TYPE = 'FOREIGN KEY'");
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



