code: func (e *MergeJoinExec) Open(ctx context.Context) error {
  	if err := e.baseExecutor.Open(ctx); err != nil {
  		return err
  	}
  
  	e.prepared = false
  	e.memTracker = memory.NewTracker(e.id, e.ctx.GetSessionVars().MemQuotaMergeJoin)
  	e.memTracker.AttachTo(e.ctx.GetSessionVars().StmtCtx.MemTracker)
  
  	e.childrenResults = make([]*chunk.Chunk, 0, len(e.children))
  	for _, child := range e.children {
  		e.childrenResults = append(e.childrenResults, child.newFirstChunk())
  	}
  
  	e.innerTable.memTracker = memory.NewTracker(innerTableLabel, -1)
  	e.innerTable.memTracker.AttachTo(e.memTracker)
  
  	return nil
  }
docs: // Open implements the Executor Open interface.