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