code: func NewEvaluatorSuite(exprs []Expression, avoidColumnEvaluator bool) *EvaluatorSuite {
  	e := &EvaluatorSuite{}
  
  	for i := 0; i < len(exprs); i++ {
  		if col, isCol := exprs[i].(*Column); isCol && !avoidColumnEvaluator {
  			if e.columnEvaluator == nil {
  				e.columnEvaluator = &columnEvaluator{inputIdxToOutputIdxes: make(map[int][]int)}
  			}
  			inputIdx, outputIdx := col.Index, i
  			e.columnEvaluator.inputIdxToOutputIdxes[inputIdx] = append(e.columnEvaluator.inputIdxToOutputIdxes[inputIdx], outputIdx)
  			continue
  		}
  		if e.defaultEvaluator == nil {
  			e.defaultEvaluator = &defaultEvaluator{
  				outputIdxes: make([]int, 0, len(exprs)),
  				exprs:       make([]Expression, 0, len(exprs)),
  			}
  		}
  		e.defaultEvaluator.exprs = append(e.defaultEvaluator.exprs, exprs[i])
  		e.defaultEvaluator.outputIdxes = append(e.defaultEvaluator.outputIdxes, i)
  	}
  
  	if e.defaultEvaluator != nil {
  		e.defaultEvaluator.vectorizable = Vectorizable(e.defaultEvaluator.exprs)
  	}
  	return e
  }
docs: // NewEvaluatorSuite creates an EvaluatorSuite to evaluate all the exprs.
  // avoidColumnEvaluator can be removed after column pool is supported.