code: func (b *builtinGreatestRealSig) evalReal(row chunk.Row) (max float64, isNull bool, err error) {
  	max, isNull, err = b.args[0].EvalReal(b.ctx, row)
  	if isNull || err != nil {
  		return max, isNull, err
  	}
  	for i := 1; i < len(b.args); i++ {
  		var v float64
  		v, isNull, err = b.args[i].EvalReal(b.ctx, row)
  		if isNull || err != nil {
  			return max, isNull, err
  		}
  		if v > max {
  			max = v
  		}
  	}
  	return
  }
docs: // evalReal evals a builtinGreatestRealSig.
  // See http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_greatest