Program: 17959
Project: 17959
Buggy source:
@Override protected QueryNode postProcessNode(QueryNode node) throws QueryNodeException {
  if (node instanceof AqpFunctionQueryNode && ((AqpFunctionQueryNode)node).getName().contains("String_Node_Str")) {
    OriginalInput oi=((AqpFunctionQueryNode)node).getOriginalInput();
    if (oi == null)     return node;
    String subQuery=oi.value;
    subQuery=ADSEscapeQuerySyntaxImpl.discardEscapeChar(subQuery).toString();
    if (!subQuery.contains("String_Node_Str")) {
      return node;
    }
    QueryConfigHandler config=this.getQueryConfigHandler();
    SolrQueryRequest req=config.get(AqpAdsabsQueryConfigHandler.ConfigurationKeys.SOLR_REQUEST).getRequest();
    SolrParams params=req.getParams();
    String qf=params.get(DisMaxParams.QF);
    if (qf == null) {
      return node;
    }
    List<QueryNode> lst=new ArrayList<QueryNode>();
    Map<String,Float> parsedQf=SolrPluginUtils.parseFieldBoosts(qf);
    for (    Entry<String,Float> entry : parsedQf.entrySet()) {
      String field=entry.getKey();
      Float boost=entry.getValue();
      ArrayList<String> result=extractMultiSpanTokens(field,subQuery);
      if (result != null && result.size() > 0) {
        for (        String val : result) {
          lst.add(new BoostQueryNode(new AqpNonAnalyzedQueryNode(new FieldQueryNode(field,val,-1,-1)),boost != null ? new BigDecimal(boost * boostCorrection).setScale(3,RoundingMode.HALF_EVEN).floatValue() : 1.0f));
        }
      }
    }
    if (lst.size() > 0) {
      lst.add(node);
      return new AqpOrQueryNode(lst);
    }
  }
  return node;
}

Fixed version (ground truth):
@Override protected QueryNode postProcessNode(QueryNode node) throws QueryNodeException {
  if (node instanceof AqpFunctionQueryNode && ((AqpFunctionQueryNode)node).getName().contains("String_Node_Str")) {
    OriginalInput oi=((AqpFunctionQueryNode)node).getOriginalInput();
    if (oi == null)     return node;
    String subQuery=oi.value;
    subQuery=ADSEscapeQuerySyntaxImpl.discardEscapeChar(subQuery).toString();
    if (!subQuery.contains("String_Node_Str")) {
      return node;
    }
    QueryConfigHandler config=this.getQueryConfigHandler();
    SolrQueryRequest req=config.get(AqpAdsabsQueryConfigHandler.ConfigurationKeys.SOLR_REQUEST).getRequest();
    SolrParams params=req.getParams();
    String qf=params.get(DisMaxParams.QF);
    if (qf == null) {
      return node;
    }
    List<QueryNode> lst=new ArrayList<QueryNode>();
    Map<String,Float> parsedQf=SolrPluginUtils.parseFieldBoosts(qf);
    for (    Entry<String,Float> entry : parsedQf.entrySet()) {
      String field=entry.getKey();
      if (field.charAt(0) == '_')       continue;
      Float boost=entry.getValue();
      ArrayList<String> result=extractMultiSpanTokens(field,subQuery);
      if (result != null && result.size() > 0) {
        for (        String val : result) {
          lst.add(new BoostQueryNode(new AqpNonAnalyzedQueryNode(new FieldQueryNode(field,val,-1,-1)),boost != null ? new BigDecimal(boost * boostCorrection).setScale(3,RoundingMode.HALF_EVEN).floatValue() : 1.0f));
        }
      }
    }
    if (lst.size() > 0) {
      lst.add(node);
      return new AqpOrQueryNode(lst);
    }
  }
  return node;
}