code: func (e *UnionExec) Open(ctx context.Context) error {
  	if err := e.baseExecutor.Open(ctx); err != nil {
  		return err
  	}
  	for _, child := range e.children {
  		e.childrenResults = append(e.childrenResults, child.newFirstChunk())
  	}
  	e.stopFetchData.Store(false)
  	e.initialized = false
  	e.finished = make(chan struct{})
  	return nil
  }
docs: // Open implements the Executor Open interface.