code: func (e *HashAggExec) Close() error {
  	if e.isUnparallelExec {
  		e.childResult = nil
  		e.groupSet = nil
  		e.partialResultMap = nil
  		return e.baseExecutor.Close()
  	}
  	// `Close` may be called after `Open` without calling `Next` in test.
  	if !e.prepared {
  		close(e.inputCh)
  		for _, ch := range e.partialOutputChs {
  			close(ch)
  		}
  		close(e.finalOutputCh)
  	}
  	close(e.finishCh)
  	for _, ch := range e.partialOutputChs {
  		for range ch {
  		}
  	}
  	for range e.finalOutputCh {
  	}
  	return e.baseExecutor.Close()
  }
docs: // Close implements the Executor Close interface.