code: func (e *MergeJoinExec) Next(ctx context.Context, req *chunk.RecordBatch) error {
  	if e.runtimeStats != nil {
  		start := time.Now()
  		defer func() { e.runtimeStats.Record(time.Since(start), req.NumRows()) }()
  	}
  	req.Reset()
  	if !e.prepared {
  		if err := e.prepare(ctx, req.RequiredRows()); err != nil {
  			return err
  		}
  	}
  
  	for !req.IsFull() {
  		hasMore, err := e.joinToChunk(ctx, req.Chunk)
  		if err != nil || !hasMore {
  			return err
  		}
  	}
  	return nil
  }
docs: // Next implements the Executor Next interface.