Program: 3548
Project: 3548
Buggy source:
/** 
 * @see java.sql.DatabaseMetaData#getExportedKeys(java.lang.String,java.lang.String,java.lang.String)
 */
public ResultSet getExportedKeys(String catalog,String schema,String table) throws SQLException {
  PrimaryKeyFinder pkFinder=new PrimaryKeyFinder(table);
  String[] pkColumns=pkFinder.getColumns();
  Stmt stat=(Stmt)conn.createStatement();
  catalog=(catalog != null) ? quote(catalog) : null;
  schema=(schema != null) ? quote(schema) : null;
  StringBuilder exportedKeysQuery=new StringBuilder(512);
  int count=0;
  if (pkColumns != null) {
    ResultSet rs=stat.executeQuery("String_Node_Str");
    ArrayList<String> tableList=new ArrayList<String>();
    while (rs.next()) {
      tableList.add(rs.getString(1));
    }
    rs.close();
    ResultSet fk=null;
    String target=table.toLowerCase();
    for (    String tbl : tableList) {
      try {
        fk=stat.executeQuery("String_Node_Str" + escape(tbl) + "String_Node_Str");
      }
 catch (      SQLException e) {
        if (e.getErrorCode() == Codes.SQLITE_DONE)         continue;
        throw e;
      }
      Stmt stat2=null;
      try {
        stat2=(Stmt)conn.createStatement();
        while (fk.next()) {
          int keySeq=fk.getInt(2) + 1;
          String PKTabName=fk.getString(3).toLowerCase();
          if (PKTabName == null || !PKTabName.equals(target)) {
            continue;
          }
          String PKColName=fk.getString(5);
          PKColName=(PKColName == null) ? pkColumns[0] : PKColName.toLowerCase();
          exportedKeysQuery.append(count > 0 ? "String_Node_Str" : "String_Node_Str").append(Integer.toString(keySeq)).append("String_Node_Str").append(escape(tbl)).append("String_Node_Str").append(escape(fk.getString(4))).append("String_Node_Str").append(escape(PKColName)).append("String_Node_Str").append(RULE_MAP.get(fk.getString(6))).append("String_Node_Str").append(RULE_MAP.get(fk.getString(7))).append("String_Node_Str");
          String fkName="String_Node_Str";
          rs=stat2.executeQuery("String_Node_Str" + "String_Node_Str" + escape(tbl) + "String_Node_Str");
          if (rs.next()) {
            Matcher matcher=FK_NAMED_PATTERN.matcher(rs.getString(1));
            if (matcher.find()) {
              fkName='\'' + escape(matcher.group(1).toLowerCase()) + '\'';
            }
          }
          rs.close();
          exportedKeysQuery.append(fkName).append("String_Node_Str");
          count++;
        }
      }
  finally {
        try {
          if (rs != null)           rs.close();
        }
 catch (        SQLException e) {
        }
        try {
          if (stat2 != null)           stat2.close();
        }
 catch (        SQLException e) {
        }
        try {
          if (fk != null)           fk.close();
        }
 catch (        SQLException e) {
        }
      }
    }
  }
  boolean exist=(count > 0);
  StringBuilder sql=new StringBuilder(512);
  sql.append("String_Node_Str").append(catalog).append("String_Node_Str").append(schema).append("String_Node_Str").append(quote(table)).append("String_Node_Str").append(exist ? "String_Node_Str" : "String_Node_Str").append("String_Node_Str").append(catalog).append("String_Node_Str").append(schema).append("String_Node_Str").append(exist ? "String_Node_Str" : "String_Node_Str").append("String_Node_Str").append(exist ? "String_Node_Str" : "String_Node_Str").append("String_Node_Str").append(exist ? "String_Node_Str" : "String_Node_Str").append("String_Node_Str").append(exist ? "String_Node_Str" : "String_Node_Str").append("String_Node_Str").append(exist ? "String_Node_Str" : "String_Node_Str").append("String_Node_Str").append(exist ? "String_Node_Str" : "String_Node_Str").append("String_Node_Str").append(pkFinder.getName() != null ? pkFinder.getName() : "String_Node_Str").append("String_Node_Str").append(Integer.toString(importedKeyInitiallyDeferred)).append("String_Node_Str").append(exist ? "String_Node_Str" : "String_Node_Str");
  if (exist)   sql.append(exportedKeysQuery).append("String_Node_Str");
  return stat.executeQuery(sql.toString());
}

Fixed version (ground truth):
/** 
 * @see java.sql.DatabaseMetaData#getExportedKeys(java.lang.String,java.lang.String,java.lang.String)
 */
public ResultSet getExportedKeys(String catalog,String schema,String table) throws SQLException {
  PrimaryKeyFinder pkFinder=new PrimaryKeyFinder(table);
  String[] pkColumns=pkFinder.getColumns();
  Stmt stat=(Stmt)conn.createStatement();
  catalog=(catalog != null) ? quote(catalog) : null;
  schema=(schema != null) ? quote(schema) : null;
  StringBuilder exportedKeysQuery=new StringBuilder(512);
  int count=0;
  if (pkColumns != null) {
    ResultSet rs=stat.executeQuery("String_Node_Str");
    ArrayList<String> tableList=new ArrayList<String>();
    while (rs.next()) {
      tableList.add(rs.getString(1));
    }
    rs.close();
    ResultSet fk=null;
    String target=table.toLowerCase();
    for (    String tbl : tableList) {
      try {
        fk=stat.executeQuery("String_Node_Str" + escape(tbl) + "String_Node_Str");
      }
 catch (      SQLException e) {
        if (e.getErrorCode() == Codes.SQLITE_DONE)         continue;
        throw e;
      }
      Stmt stat2=null;
      try {
        stat2=(Stmt)conn.createStatement();
        while (fk.next()) {
          int keySeq=fk.getInt(2) + 1;
          String PKTabName=fk.getString(3).toLowerCase();
          if (PKTabName == null || !PKTabName.equals(target)) {
            continue;
          }
          String PKColName=fk.getString(5);
          PKColName=(PKColName == null) ? pkColumns[0] : PKColName.toLowerCase();
          exportedKeysQuery.append(count > 0 ? "String_Node_Str" : "String_Node_Str").append(Integer.toString(keySeq)).append("String_Node_Str").append(escape(tbl)).append("String_Node_Str").append(escape(fk.getString(4))).append("String_Node_Str").append(escape(PKColName)).append("String_Node_Str").append(RULE_MAP.get(fk.getString(6))).append("String_Node_Str").append(RULE_MAP.get(fk.getString(7))).append("String_Node_Str");
          String fkName="String_Node_Str";
          rs=stat2.executeQuery("String_Node_Str" + "String_Node_Str" + escape(tbl) + "String_Node_Str");
          if (rs.next()) {
            Matcher matcher=FK_NAMED_PATTERN.matcher(rs.getString(1));
            if (matcher.find()) {
              fkName='\'' + escape(matcher.group(1).toLowerCase()) + '\'';
            }
          }
          rs.close();
          exportedKeysQuery.append(fkName).append("String_Node_Str");
          count++;
        }
      }
  finally {
        try {
          if (rs != null)           rs.close();
        }
 catch (        SQLException e) {
        }
        try {
          if (stat2 != null)           stat2.close();
        }
 catch (        SQLException e) {
        }
        try {
          if (fk != null)           fk.close();
        }
 catch (        SQLException e) {
        }
      }
    }
  }
  boolean exist=(count > 0);
  StringBuilder sql=new StringBuilder(512);
  sql.append("String_Node_Str").append(catalog).append("String_Node_Str").append(schema).append("String_Node_Str").append(quote(table)).append("String_Node_Str").append(exist ? "String_Node_Str" : "String_Node_Str").append("String_Node_Str").append(catalog).append("String_Node_Str").append(schema).append("String_Node_Str").append(exist ? "String_Node_Str" : "String_Node_Str").append("String_Node_Str").append(exist ? "String_Node_Str" : "String_Node_Str").append("String_Node_Str").append(exist ? "String_Node_Str" : "String_Node_Str").append("String_Node_Str").append(exist ? "String_Node_Str" : "String_Node_Str").append("String_Node_Str").append(exist ? "String_Node_Str" : "String_Node_Str").append("String_Node_Str").append(exist ? "String_Node_Str" : "String_Node_Str").append("String_Node_Str").append(pkFinder.getName() != null ? pkFinder.getName() : "String_Node_Str").append("String_Node_Str").append(Integer.toString(importedKeyInitiallyDeferred)).append("String_Node_Str").append(exist ? "String_Node_Str" : "String_Node_Str");
  if (exist)   sql.append(exportedKeysQuery).append("String_Node_Str");
  return ((Stmt)stat).executeQuery(sql.toString(),true);
}