Github user moshebla commented on a diff in the pull request:

    https://github.com/apache/lucene-solr/pull/385#discussion_r191999062
  
    --- Diff: solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java 
---
    @@ -175,69 +172,83 @@ public String getHashableId() {
         return id;
       }
     
    -  public boolean isBlock() {
    -    return solrDoc.hasChildDocuments();
    +  /**
    +   * @return String id to hash
    +   */
    +  public String getHashableId() {
    +    return getHashableId(solrDoc);
       }
     
    -  @Override
    -  public Iterator<Document> iterator() {
    -    return new Iterator<Document>() {
    -      Iterator<SolrInputDocument> iter;
    -
    -      {
    -        List<SolrInputDocument> all = flatten(solrDoc);
    -
    -        String idField = getHashableId();
    -
    -        boolean isVersion = version != 0;
    -
    -        for (SolrInputDocument sdoc : all) {
    -          sdoc.setField(IndexSchema.ROOT_FIELD_NAME, idField);
    -          if(isVersion) sdoc.setField(CommonParams.VERSION_FIELD, version);
    -          // TODO: if possible concurrent modification exception (if 
SolrInputDocument not cloned and is being forwarded to replicas)
    -          // then we could add this field to the generated lucene document 
instead.
    -        }
    -
    -        iter = all.iterator();
    -     }
    +  public List<SolrInputDocument> computeFlattenedDocs() {
    +    List<SolrInputDocument> all = flatten(solrDoc);
     
    -      @Override
    -      public boolean hasNext() {
    -        return iter.hasNext();
    -      }
    +    String rootId = getHashableId();
     
    -      @Override
    -      public Document next() {
    -        return DocumentBuilder.toDocument(iter.next(), req.getSchema());
    -      }
    +    boolean isVersion = version != 0;
     
    -      @Override
    -      public void remove() {
    -        throw new UnsupportedOperationException();
    +    for (SolrInputDocument sdoc : all) {
    +      if (all.size() > 1) {
    --- End diff --
    
    Previously flatten was not called if there were no child documents, since 
isBlock() would return false in 
[DirectUpdateHandler2](https://github.com/apache/lucene-solr/pull/385/files#diff-ebdc4ecf6a2398f102ba7fae37648d10L976).
 If we remove this condition even documents without any children will have 
__root__ added to them, which is not the case beforehand.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to