code: func (e *HashJoinExec) fetchInnerRows(ctx context.Context) error {
  	e.innerResult = chunk.NewList(e.innerExec.retTypes(), e.initCap, e.maxChunkSize)
  	e.innerResult.GetMemTracker().AttachTo(e.memTracker)
  	e.innerResult.GetMemTracker().SetLabel(innerResultLabel)
  	var err error
  	for {
  		if e.finished.Load().(bool) {
  			return nil
  		}
  		chk := e.children[e.innerIdx].newFirstChunk()
  		err = e.innerExec.Next(ctx, chunk.NewRecordBatch(chk))
  		if err != nil || chk.NumRows() == 0 {
  			return err
  		}
  		e.innerResult.Add(chk)
  	}
  }
docs: // fetchInnerRows fetches all rows from inner executor, and append them to
  // e.innerResult.