code: func (e *NestedLoopApplyExec) Open(ctx context.Context) error {
  	err := e.outerExec.Open(ctx)
  	if err != nil {
  		return err
  	}
  	e.cursor = 0
  	e.innerRows = e.innerRows[:0]
  	e.outerChunk = e.outerExec.newFirstChunk()
  	e.innerChunk = e.innerExec.newFirstChunk()
  	e.innerList = chunk.NewList(e.innerExec.retTypes(), e.initCap, e.maxChunkSize)
  
  	e.memTracker = memory.NewTracker(e.id, e.ctx.GetSessionVars().MemQuotaNestedLoopApply)
  	e.memTracker.AttachTo(e.ctx.GetSessionVars().StmtCtx.MemTracker)
  
  	e.innerList.GetMemTracker().SetLabel(innerListLabel)
  	e.innerList.GetMemTracker().AttachTo(e.memTracker)
  
  	return nil
  }
docs: // Open implements the Executor interface.