code: func (b *builtinPowSig) evalReal(row chunk.Row) (float64, bool, error) {
  	x, isNull, err := b.args[0].EvalReal(b.ctx, row)
  	if isNull || err != nil {
  		return 0, isNull, err
  	}
  	y, isNull, err := b.args[1].EvalReal(b.ctx, row)
  	if isNull || err != nil {
  		return 0, isNull, err
  	}
  	power := math.Pow(x, y)
  	if math.IsInf(power, -1) || math.IsInf(power, 1) || math.IsNaN(power) {
  		return 0, false, types.ErrOverflow.GenWithStackByArgs("DOUBLE", fmt.Sprintf("pow(%s, %s)", strconv.FormatFloat(x, 'f', -1, 64), strconv.FormatFloat(y, 'f', -1, 64)))
  	}
  	return power, false, nil
  }
docs: // evalReal evals POW(x, y).
  // See https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_pow